## START: Set by rpmautospec ## (rpmautospec version 0.8.4) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 2; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %bcond check 1 # Goose is being shipped in RHEL 9.x extensions, and in such environment, we # don't have access to `_smp_tasksize_proc` due to it being added a newer # version of rpm, and to allow our package to build in such environment and to # avoid OOM during our builds, we have borrowed a macro from the rust commpiler # package to allow us to set constraints in that environment. # * https://src.fedoraproject.org/rpms/rust/blob/rawhide/f/rust.spec#_820 %if %undefined constrain_build %define constrain_build(m:) %{lua: for l in io.lines('/proc/meminfo') do if l:sub(1, 9) == "MemTotal:" then local opt_m = math.tointeger(rpm.expand("%{-m*}")) local mem_total = math.tointeger(string.match(l, "MemTotal:%s+(%d+)")) local cpu_limit = math.max(1, mem_total // (opt_m * 1024)) if cpu_limit < math.tointeger(rpm.expand("%_smp_build_ncpus")) then rpm.define("_smp_build_ncpus " .. cpu_limit) end break end end } %endif %constrain_build -m 6144 %global rustflags_codegen_units 16 Name: goose Version: 1.38.0 Release: %autorelease Summary: Extensible AI agent client URL: https://github.com/block/goose Source: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # To create the vendor tarball, use the generate-vendor-tarball.sh script: # chmod +x generate-vendor-tarball.sh # ./generate-vendor-tarball.sh Source1: %{name}-%{version}-vendor.tar.xz # This script is used to generate the vendor tarball for goose, and while it # does not offer any practical/real usage for the application, it helps us to # easily generate the vendored tarball and apply the correct patches while # doing so. Source99: generate-vendor-tarball.sh ## Dependency patches (1-19) # # Strip non-Linux platform deps (Windows winapi/winreg, macOS metal/apple-native # keyring), remove the vendor/v8 workspace member and all [patch.crates-io] # entries (v8, cudaforge). Remove keyring 'vendored' feature (use system dbus). Patch1: 0001-Strip-non-Linux-deps-and-use-system-libraries.patch # Configure feature flags for downstream packaging: set default features to # native-tls, telemetry, otel, and system-keyring in goose-cli and goose-server. # Switch sqlx from bundled 'sqlite' to 'sqlite-unbundled' to link against system # sqlite. Patch2: 0002-Set-downstream-feature-flags.patch # Downgrade pkcs8 from 0.11.0 to 0.10.2 so that pkcs1 (0.7.5), pkcs8, and sec1 # (0.7) all resolve against the same spki/der/const-oid generation. Upstream # defaults to rustls-tls and never activates these optional deps together; # native-tls activates all three, exposing a type mismatch between spki 0.7 and # 0.8. Patch3: 0003-Downgrade-pkcs8-to-0.10.2-for-native-tls-compat.patch # aws-lc-rs on rcgen is enabled, which pulls in aws-lc-rs even when rust-tls is # disabled. Put it in the feature list with rust-tls so it is properly disabled. Patch4: 0004-aws-lc-rs-feature-flag.patch ## Code patches (20-99) # # Avoid the 'RETURNING' SQL statement which requires SQLite 3.35.0. EPEL 9 is # stuck on 3.34.1, so we split the INSERT + SELECT into two statements. Patch20: 0020-Fix-sql-statement-from-session-manager.patch # Since we are disabling codemode feature, we need to update the snapshot of a # test so it passes when running `cargo test`. That's better than skipping the # test entirely. Patch21: 0021-Update-snapshot-test-without-codemode-instructions.patch ## Downstream only patches (100-799) # # Patch the `build.rs` for `ring` crate to avoid using the pre-generated object # files that comes with the vendored crate, and instead, build from system # libraries. # The patch was taken from: # * https://src.fedoraproject.org/rpms/rust-ring/blob/d6d681ed07c088671cb5accc0102470b059a5e88/f/rust-ring.spec#_24 # # We have it placed in our directory due to the need of modifications depending # on the version bump from ring, otherwise, we should Patch0100: 0100-Downstream-only-never-use-pre-generated-object-files.patch ## RHEL only patches (800-899) # Patches in the 800-899 range are applied only to RHEL. # # Add disclaimer as required by legal only on RHEL Patch800: 0800-Include-legal-message-for-goose-proxy-provider.patch # i686: https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} # This package provides a binary called goose and it will conflict with our # package, as both installs the resulting binary to `/usr/bin/goose`, so it's # better that we indicate it has a conflict. Conflicts: golang-github-pressly-goose # The license for the goose project is Apache-2.0, except for: # # MIT (Minified JavaScript libraries): # - crates/goose-mcp/src/autovisualiser/templates/assets/chart.min.js # - crates/goose-mcp/src/autovisualiser/templates/assets/mermaid.min.js # - crates/goose-mcp/src/autovisualiser/templates/assets/leaflet.markercluster.min.js # # ISC (Minified JavaScript library): # - crates/goose-mcp/src/autovisualiser/templates/assets/d3.min.js # # BSD-3-Clause (Minified Javascript library): # - crates/goose-mcp/src/autovisualiser/templates/assets/d3.sankey.min.js # # BSD-2-Clause: (Minified JavaScript library and CSS stylesheet) # - crates/goose-mcp/src/autovisualiser/templates/assets/leaflet.min.js # - crates/goose-mcp/src/autovisualiser/templates/assets/leaflet.min.css # # CC-BY-4.0: # - All documentation (excluding specifications) # # licensecheck will report that set of 6 licenses for the source archive. # # CC0-1.0 (constant_time_eq): # - This package was discussed over the legal ML, due to it being present in # Fedora already, but having a SPDX license that is not allowed. # - https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/thread/262UHMIUTLU3IMEQCFJUIS4EJIMEIRCN/ # # A couple of files present under `crates/goose-mcp` and `crates/goose-cli` # were discussed in the legal ML due to them not having a clear license or # copyright terms in the upstream repository. The discussion of those items can # be seen at: # - https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/thread/JDE6YNL42ZKVA5ZF4PEUGI5SV2PCSHIR/ # # For convenience, the items discussed in the legal ML thread are namely: # - https://github.com/block/goose/tree/v1.38.0/crates/goose-mcp/src/computercontroller/tests/data # - https://github.com/block/goose/tree/v1.38.0/crates/goose-cli/src/scenario_tests/recordings # # Rust crates compiled into the executable contribute additional license terms. # To obtain the following list of licenses, build the package and note the # output of %%{cargo_license_summary}. # # (Apache-2.0 OR MIT) AND BSD-3-Clause # (MIT OR Apache-2.0) AND Unicode-3.0 # 0BSD OR MIT OR Apache-2.0 # Apache-2.0 # Apache-2.0 AND ISC # Apache-2.0 OR BSL-1.0 # Apache-2.0 OR MIT # Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT # BSD-2-Clause # BSD-2-Clause OR Apache-2.0 OR MIT # BSD-3-Clause # BSD-3-Clause AND MIT # BSD-3-Clause OR Apache-2.0 # BSD-3-Clause OR MIT # BSL-1.0 # CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception # CC0-1.0 OR MIT-0 OR Apache-2.0 # ISC # LGPL-3.0-or-later # MIT # MIT AND BSD-3-Clause # MIT OR Apache-2.0 # MIT OR Apache-2.0 OR BSD-1-Clause # MIT OR Apache-2.0 OR LGPL-2.1-or-later # MIT OR Apache-2.0 OR Zlib # MIT OR Zlib OR Apache-2.0 # MIT-0 # MPL-2.0 # Unicode-3.0 # Unlicense OR MIT # Zlib # Zlib OR Apache-2.0 OR MIT # bzip2-1.0.6 License: %{shrink: (0BSD OR Apache-2.0 OR MIT) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR CC0-1.0) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSD-1-Clause OR MIT) AND (Apache-2.0 OR BSD-2-Clause OR MIT) AND (Apache-2.0 OR BSD-3-Clause) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR CC0-1.0 OR MIT-0) AND (Apache-2.0 OR LGPL-2.1-or-later OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 OR MIT OR Zlib) AND BSD-2-Clause AND BSD-3-Clause AND (BSD-3-Clause AND MIT) AND (BSD-3-Clause OR MIT) AND BSL-1.0 AND ISC AND LGPL-3.0-or-later AND MIT AND (MIT OR Unlicense) AND MIT-0 AND MPL-2.0 AND Unicode-3.0 AND Zlib AND bzip2-1.0.6 } # LICENSE.dependencies contains a full license breakdown BuildRequires: cargo-rpm-macros >= 25 # Required by crate libdbus-sys (vendored) BuildRequires: dbus-devel # Required by crate libsqlite3-sys (vendored) BuildRequires: clang-devel BuildRequires: pkgconfig(sqlite3) # Required by crate onig_sys (vendored) BuildRequires: oniguruma-devel # Required by crate openssl-sys (vendored) BuildRequires: openssl-devel # Required by crate ring (vendored) BuildRequires: /usr/bin/perl # Required by crate zstd-sys (vendored) BuildRequires: libzstd-devel # Sublime Text 3 language definitions for syntax highlighting # from: https://github.com/sublimehq/Packages/tree/fa6b862 # - all except Rust: LicenseRef-Fedora-UltraPermissive # https://gitlab.com/fedora/legal/fedora-license-data/-/issues/516 # - Rust: MIT Provides: bundled(sublime-syntax) = 4075~gitfa6b862 # In RHEL 9, we depend on sqlite3 3.34.1-10 as it contains a necessary fix for # exporting the `sqlite3_deserialize` function for goose builds. # More info on: https://redhat.atlassian.net/browse/RHEL-155950 %if 0%{?rhel} == 9 Requires: sqlite-libs >= 3.34.1-10 %endif # Third-party language definitions for syntax highlighting The `syntect` crate # is bundling all of sublimehq/Packages syntax definitions. To achieve the # below list of langauge definitions syntaxes, use the following command: # * strings %%{name}-%%{version}/vendor/syntect-*/assets/default_newlines.packdump | grep 'Packages/' Provides: bundled(sublime-syntax-ASP) Provides: bundled(sublime-syntax-ActionScript) Provides: bundled(sublime-syntax-AppleScript) Provides: bundled(sublime-syntax-BatchFile) Provides: bundled(sublime-syntax-CSharp) Provides: bundled(sublime-syntax-Cpp) Provides: bundled(sublime-syntax-CSS) Provides: bundled(sublime-syntax-Clojure) Provides: bundled(sublime-syntax-D) Provides: bundled(sublime-syntax-Diff) Provides: bundled(sublime-syntax-Erlang) Provides: bundled(sublime-syntax-Go) Provides: bundled(sublime-syntax-Graphviz) Provides: bundled(sublime-syntax-Groovy) Provides: bundled(sublime-syntax-HTML) Provides: bundled(sublime-syntax-Haskell) Provides: bundled(sublime-syntax-Java) Provides: bundled(sublime-syntax-JavaScript) Provides: bundled(sublime-syntax-LaTeX) Provides: bundled(sublime-syntax-Lisp) Provides: bundled(sublime-syntax-Lua) Provides: bundled(sublime-syntax-Makefile) Provides: bundled(sublime-syntax-Markdown) Provides: bundled(sublime-syntax-Matlab) Provides: bundled(sublime-syntax-OCaml) Provides: bundled(sublime-syntax-Object-C) Provides: bundled(sublime-syntax-PHP) Provides: bundled(sublime-syntax-Pascal) Provides: bundled(sublime-syntax-Perl) Provides: bundled(sublime-syntax-Python) Provides: bundled(sublime-syntax-R) Provides: bundled(sublime-syntax-Rails) Provides: bundled(sublime-syntax-Regular-Expressions) Provides: bundled(sublime-syntax-RestructuredText) Provides: bundled(sublime-syntax-Ruby) Provides: bundled(sublime-syntax-Rust) Provides: bundled(sublime-syntax-SQL) Provides: bundled(sublime-syntax-Scala) Provides: bundled(sublime-syntax-ShellScript) Provides: bundled(sublime-syntax-TCL) Provides: bundled(sublime-syntax-Textile) Provides: bundled(sublime-syntax-XML) Provides: bundled(sublime-syntax-YAML) # Default themes that are shipped with `syntect` crate under the assets folder. # To achieve the below list of themes definitions, see: # * https://github.com/trishume/syntect/blob/v5.3.0/src/dumps.rs#L207-L218. # # InspiredGithub theme: MIT Provides: bundled(syntect-theme-InspiredGithub) # Solarized theme: MIT Provides: bundled(syntect-theme-Solarized) # Spacegray theme: MIT # The specific themes mentioned in the above snippet for syntect#v5.3.0 # (src/dump.rs#L212) is included in the Spacegray theme. Provides: bundled(sublime-theme-Spacegray) # Minified JavaScript libraries and minified CSS stylesheets contained in # `goose-mcp` crate for the autovisualizer tool. # * crates/goose-mcp/src/autovisualizer/templates/assets/ # # Note: Versions where checked under each minified file. # # chart.min.js: MIT Provides: bundled(chart-min-js) = 4.5.0 # d3.min.js: ISC Provides: bundled(d3-min-js) = 7.9.0 # d3-sakey.min.js: BSD-3-Clause Provides: bundled(d3-sankey-min-js) = 0.12.3 # leaflet.min.js: BSD-2-Clause Provides: bundled(leaflet-min-js) = 1.9.4 # leaflet.min.css: BSD-2-Clause Provides: bundled(leaflet-min-css) = 1.9.4 # leaflet-markercluster.min.js: MIT Provides: bundled(leaflet-markercluster-min-js) = 1.5.3 # mermaid.min.js: MIT # Couldn't find a version of the mermaid library inside the minified file. We # assume it is the latest version, as all the others are also in the latest, # but since we were not able to identify it, better to be safe and not provide # any version here. Provides: bundled(mermaid-min-js) %global _description %{expand: Goose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - autonomously. Whether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision. Designed for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.} %description %{_description} %prep # Break the patches into batches since # patches >= 800 are only applied on RHEL systems. %setup -q -a1 %autopatch -p1 -M 799 %if 0%{?rhel} %autopatch -p1 -m 800 -M 899 %endif # Remove the documentation folder but leave `static/img/logo_{dark,light}.png` # in it, as they are used in goose-cli crate. All the other markdown, audio, # images and etc are not necessary to be present here. find documentation \ -depth \( -type f ! -path "documentation/static/img/logo_dark.png" ! -path "documentation/static/img/logo_light.png" -delete \) \ -o \( -type d -empty -delete \) # The following folders are being deleted here so they are not present in the # rebuilt srpm. # * Delete the `ui` folder as it contains the electron desktop app for Goose, # which should not be packaged here. # # * Remove the `bin` folder as it is managed by hermit # (https://github.com/cashapp/hermit) to bootstrap development tools used # by goose. # # * Remove evals folder as they are used in upstream CI for evaluation, but # serve no purpose on downstream # # * Remove the `services` and `oidc-proxy folder as it contains an # `ask-ai-bot` that is used mainly for the discord community, which, does # not provide any benefit to keep it here as it is not being used by the # goose source in any way or form. # # * Remove the in-tree vendor/v8 shim crate (used by upstream for code-mode # feature which we disable). Already removed from workspace members by # patch. rm -rf ui bin .claude .codex .cursor evals services oidc-proxy vendor/v8 # Remove the `test_image.jpg` as we are not sure if this was LLM generated or # made by a human. Since there is no copyright data anywhere in the repository # mentioning this and the PR that introduced it # (https://github.com/block/goose/pull/3688) does not mention anything about # the source of the image, it's better that we remove this anyway. rm crates/goose-cli/src/scenario_tests/test_data/test_image.jpg # Helper function to prune vendored folders that contains C libraries or # pre-defined objects. All pruned libraries here should be linked against # system libraries instead. # # Note: The operations `rm` and `find` in this helper function are split to # allow easier reading and maintenance, but they could be grouped together in # just one find command. prune_vendor() { local crate_pattern="$1" local path_to_remove="$2" # We use ${var} without quotes here to allow the '*' glob to expand rm -rf ${crate_pattern}/${path_to_remove} # Patch the cargo checksum to ignore the deleted files find . -path "*/${crate_pattern}/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' } pushd vendor prune_vendor "libdbus-sys-*" "vendor" prune_vendor "libsqlite3-sys-*" "{sqlite3,sqlcipher}" prune_vendor "onig_sys-*" "oniguruma" prune_vendor "ring-*" "pregenerated" # This expression will match: # - zstd-* / zstd-*+zstd* # - zstd-safe-* / zstd-safe*+zstd* # - zstd-sys-*+zstd* # And will add the `pkg-config` to the default-features, and patch # .cargo-checksum.json to ignore the changed files. find . -maxdepth 1 -path "*/zstd-*" \ -exec sed -i '/^default = \[/s/\[/&"pkg-config", /' "{}/Cargo.toml" \; \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' "{}/.cargo-checksum.json" \; # zstd-safe depends on zstd-sys with `default-features = false`, which # prevents the pkg-config default added above from taking effect. Explicitly # add the pkg-config feature to the dependency so that zstd-sys always links # against the system library instead of trying to build from bundled sources. sed -i '/\[dependencies\.zstd-sys\]/,/^$/{ /default-features = false/a\features = ["pkg-config"] }' zstd-safe-*/Cargo.toml prune_vendor "zstd-sys-*" "zstd" popd # Sometimes Rust sources start with #![...] attributes, and "smart" editors # think it's a shebang and make them executable. Then brp-mangle-shebangs gets # upset... find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' %cargo_prep -v vendor %build # The oniguruma-sys crate does not have a feature to enable using system lib # (pkg-config), so we have to set `RUSTONIG_SYSTEM_LIBONIG` in order for it to # use pkg-config. export RUSTONIG_SYSTEM_LIBONIG=1 %cargo_build # Generate man pages from clap CLI definitions export CARGO_MANIFEST_DIR="target/rpm" target/rpm/generate_manpages %cargo_vendor_manifest %{cargo_license_summary} %{cargo_license} > LICENSE.dependencies %install install -Dpm 0755 target/rpm/goose -t %{buildroot}%{_bindir} install -Dpm 0755 target/rpm/goosed -t %{buildroot}%{_bindir} # Install man pages install -d %{buildroot}%{_mandir}/man1 install -pm 0644 target/man/*.1 -t %{buildroot}%{_mandir}/man1 %if %{with check} %check # The oniguruma-sys crate does not have a feature to enable using system lib # (pkg-config), so we have to set `RUSTONIG_SYSTEM_LIBONIG` in order for it to # use pkg-config. export RUSTONIG_SYSTEM_LIBONIG=1 # The following tests are skipped for reasons of: # # * Network / DNS resolution failures: skip="${skip-} --skip providers::gcpauth::tests::test_token_refresh_race_condition" # * Potential copyrightable content (see %%prep for a longer explanation): skip="${skip-} --skip scenario_tests::scenarios::tests::test_image_analysis" # * Flaky test failing, better to skip for now. skip="${skip-} --skip model::tests::with_canonical_limits::skips_canonical_output_limit_when_it_equals_context_limit" # * Timing-sensitive test: races against run completion in slow build environments. skip="${skip-} --skip test_steer_session_adds_input_to_active_prompt" skip="${skip-} --skip plugins::tests::auto_update_plugins_skips_recently_checked_plugins" skip="${skip-} --skip plugins::tests::auto_update_plugins_updates_enabled_plugins" skip="${skip-} --skip plugins::tests::updates_git_backed_plugin" %cargo_test -- -- ${skip-} %endif %files %doc README.md %doc SECURITY.md %doc GOVERNANCE.md %license LICENSE %license LICENSE.dependencies %license crates/goose-mcp/licenses/chart-js.license %license crates/goose-mcp/licenses/d3-js.license %license crates/goose-mcp/licenses/d3-sankey.license %license crates/goose-mcp/licenses/leaflet.license %license crates/goose-mcp/licenses/leaflet-markercluster.license %license crates/goose-mcp/licenses/mermaid.license %license cargo-vendor.txt %{_bindir}/goose %{_bindir}/goosed %{_mandir}/man1/goose*.1* %changelog ## START: Generated by rpmautospec * Thu Jul 16 2026 Fedora Release Engineering - 1.38.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild * Wed Jun 17 2026 Sam Doran - 1.38.0-1 - Update to version 1.38.0 - Canonical thinking modes across providers - Surface Anthropic stream refusals as visible errors - ACP secret key support at goose serve endpoint - Unified OTLP logging schema for cross-tool detection - Opt-in ACP last message snippets for sessions - Custom ACP method to get session info - Steering messages with ACP - ACP list sessions with keyword and type filter - ACP thinking effort config option - Image read tool - ACP methods for config extensions - Custom notifications only when ACP client specifies capability - Session import functionality - Replay ACP images on session load - Raw provider supported models over ACP - ACP session system prompt setter - Perplexity as declarative OpenAI-compatible provider - Alibaba (Qwen via DashScope) declarative provider - Configurable tool output size limit via GOOSE_MAX_TOOL_RESPONSE_SIZE - /model slash command in CLI for session model switching - Databricks AI Gateway provider - Expose built-in skills through sources list ACP calls - Replace raw config and secret methods in ACP - Support Google model inventory refresh - Correctly map ollama_cloud to canonical provider and update max tokens - Incorrect max tokens values for Groq provider - Classify Bedrock ValidationException as ExecutionError - Page through all Databricks AI Gateway v2 endpoints when listing models - Preserve unparseable extension entries during config refresh - Forward ACP server context window size to clients - Skip OTLP signals when protocol=grpc to avoid background-thread panic - Make Azure api-version query param optional - Stricter GGUF requirements, auto detection of tool calling support, fixed thinking output parsing - Remove unused fetch-metadata IPC handler (SSRF) - Replace Venice custom provider with declarative config - Coalesce streaming chunks under one message id in ACP - Require extension_name on read_resource - Seed provider handoff history in ACP - Handle ACP requests concurrently - Mark stream decode errors retryable - Create goose-providers crate with canonical models and types - ACP session setup refactor - LRU cache for token counting - Replace review subprocess timeout with turn limits - Honor blocking Stop hook decisions - Forward custom headers through OAuth connect path - Prefer goose aliases for Databricks v2 inventory - Mount ACP in goosed server for iterative migration - Remove threads layer, use sessions directly for ACP - Install plugins to ~/.agents/plugins - Switch to official new rust-sdk for ACP - Install plugins support - Deduplicate _goose/providers/list RPC call at startup - Translate ACP host capabilities into MCP initialization - Prompt injection mitigation enabled by default for internal users - Re-adjust pattern-based detection confidence scores - Add directionality to egress logging - Scheduled recipe session params - Unscheduling a recipe should not delete them - Read prompted file parameters in recipes * Thu May 22 2025 Rodolfo Olivieri - 1.36.0-1 - Update to version 1.36.0 - goose review local code review command - /goal command for agent self-evaluation before finishing - Hooks system for PreToolUse denial and extensibility - Slash commands (built-in, skill, recipe) in ACP server - Open-plugins generalization and skills - Summon subagent instructions - Unified thinking effort control across all providers - NEAR AI Cloud provider - Scaleway provider - Vercel AI Gateway provider - Atomic Chat declarative OpenAI-compatible provider - Routstr declarative provider - FuturMix provider - oMLX declarative provider - Harbor eval runner - MAX_CODE_BLOCK_LINES configurable via env vars - Honor GOOSE_FAST_MODEL env var in ModelConfig - GPT-5.5 in known models - Paginate ACP session list - Pass session cwd param to ACP providers - Opt-in to Vercel AI gateway leaderboard - GOOSE_OAUTH_CALLBACK_PORT for stable OAuth redirect_uri - Proactive OAuth token refresh to avoid re-auth on every session - Strip chain-of-thought markers from custom provider output - Nushell terminal and completion support - Optional --parameters flag for scheduled recipes - Quarterly option for scheduler - GitHub Copilot /responses API support - Projects as backend sources with system prompt injection - Linux musl CLI builds - GOOSE_DISABLE_TOOL_CALL_SUMMARY env var - Tolerate missing responses output - Serialize per-session agent creation to stop duplicate MCP init - Respect GOOSE_MAX_TURNS in gateway sessions - Send empty object instead of null for Anthropic tool_use input - Preserve thinking content for provider context - Mention configurable timeout env vars in Ollama stream stall error - Include full recipe parameter details in load/discovery output - Use context limit from /model/info for LiteLLM custom models - Plain > prompt instead of goose emoji in CLI - Emit trace_output as span attribute instead of event - Check file fallback when keyring has no entry - Use current_exe() instead of PATH lookup when spawning goose - Set TCP_USER_TIMEOUT on streamable HTTP clients - Activate custom provider after adding via configure - Flush OTLP traces reliably on exit with configurable timeout - Reduce excessive MISSING_TRANSLATION warnings for fallback locales - Improve Telegram gateway error reporting and connection reliability - Zero out cost for local providers (ollama, local) - Persist accumulated cost in session DB to survive reload - Prevent tool-use marker leakage in toolshim output - Re-apply canonical limits when delegate overrides model - Report cumulative total_tokens in stream-json/json output - Refresh GCP metadata server token on expiration - Apply request_params to outgoing OpenAI API payload - Gemini 3.x known_location Global routing entries - Coalesce streaming Thinking deltas and list available tools on not-found - Honor Retry-After on 429 responses - Preserve user-set session name for recipe-based chats - Enforce exp independently of MAX_TOKEN_AGE_SECONDS in OIDC proxy - Omit max_tokens for OpenAI-compatible requests when unset - Set correct MCP-app host capabilities - Normalize nullable schemas for Vertex Gemini compatibility - Isolate GitHub recipe temp paths - Set X-Initiator header on GitHub Copilot requests - Honor dynamic_models: false in declarative provider configs - Cache trailing message for stable prefix across Bedrock agent turns - Case-insensitive model name lookup for context_limit - Handle Bedrock ReasoningContent blocks gracefully - Ensure parallel tool image responses don't interleave on Databricks - Insert tool pair summaries at chronological position in conversation - Enable SQLite foreign key enforcement in session pool - Accept null tool_call arguments in OpenAI streaming chunks - Synchronously reap ACP child to avoid SIGCHLD race - Elicitation fixes - Return 400 instead of panicking on invalid CSP header value - Keep SSE reconnect loop alive on long disconnects - Convert quoted numeric config values to numbers if needed - Use appInfo instead of clientInfo in MCP Apps init handshake - Use mkdir -p for self-test workspace initialization - Exclude preprompt from session title generation - Prevent login-shell PATH probe from suspending goose on startup - Handle non-interactive terminal in goose configure - Use python3 in developer extension instructions - Build summon instructions per turn - Protocol cleanup - Dependency hygiene - Prompt injection mitigation: update pattern-based detection to reduce FPs - Surface resolved Databricks model metadata - Include request URL in provider error messages - Flag for login shell PATH - Structured per-provider config block, non-destructive provider switching - Preserve thinking content for providers that require it - Dynamically refresh skill instructions each turn - Show tool name in approval prompt - Location column in CLI skills table - Consolidate logging setup into shared helper - Support optional api_key configuration for declarative openai-engine providers - Recipe discovery and execution in ACP server - Group consecutive tool calls into one summarized chain card - Replace artifact heuristics and regexes with protocol messages - Improvements to LM Studio declarative provider - Parallelize provider resolution and eagerly init SQLite pool - ACP streamable HTTP spec compliance - Refresh onboarding when provider catalog loads - Redesign extensions configuration - Redesign skills library backend - Mergeable configs cleanup ## END: Generated by rpmautospec