feat(acp): add GOOSE_DISABLE_TOOL_CALL_SUMMARY to opt out of per-tool-call summaries - #8947
Merged
DOsinga merged 3 commits intoMay 12, 2026
Merged
Conversation
…-call summaries The ACP server fires an auxiliary `provider.complete_fast` call for every tool invocation to upgrade the synchronous `fallback_title` (tool name + truncated args) into a model-generated short phrase shown in the UI. On rate-limited providers — Code Assist OAuth and Gemini API free tier in particular — this per-tool-call round-trip multiplies the agent's quota footprint and can exhaust burst caps mid-session. Headless ACP integrations that don't surface the title at all still pay the cost. Add an opt-out env var / config key (default off, current behavior preserved) that mirrors the existing `GOOSE_DISABLE_SESSION_NAMING`. When set, the synchronous fallback title remains visible to the client and no extra provider call is fired. Signed-off-by: ocervinka <cervinka@gmail.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
DOsinga
approved these changes
May 12, 2026
DOsinga
left a comment
Collaborator
There was a problem hiding this comment.
Clean, minimal change that follows the existing GOOSE_DISABLE_SESSION_NAMING pattern. I pushed a small cleanup commit removing the redundant inline comment (the config key name is self-documenting) and the example block in the env-var docs. LGTM.
shafqatevo
pushed a commit
to shafqatevo/goose
that referenced
this pull request
Aug 7, 2026
…-call summaries (aaif-goose#8947) Signed-off-by: ocervinka <cervinka@gmail.com> Signed-off-by: Douwe Osinga <douwe@squareup.com> Co-authored-by: Douwe Osinga <douwe@squareup.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The ACP server fires an auxiliary
provider.complete_fastcall for every toolinvocation. Its only purpose is to upgrade the synchronous
fallback_title(tool name + truncated args) into a model-generated short phrase shown in the
ACP UI's tool-call list.
For two real-world cases this auxiliary call is the difference between a run
that finishes and one that gets throttled mid-session:
makes 4 tool calls fires 4 extra
complete_fastrequests on the samebucket, plus the existing session-naming call (when not opted out), and
trips the 429.
summaries triple or quadruple the request count of any non-trivial agent
loop and exhaust the quota long before the day ends.
Headless ACP integrations that don't surface the title at all still pay the
cost.
Change
Add
GOOSE_DISABLE_TOOL_CALL_SUMMARY(env var /config.yamlkey, bool,default
false). Behavior unchanged when unset. When set, the synchronousfallback title remains visible to the client and the
complete_fastroundtrip is skipped.
This mirrors the existing
GOOSE_DISABLE_SESSION_NAMINGprecedent line-for-line:config_value!macro entryConfig::global().get_*().unwrap_or(false)shapeDiff size
3 files, +17 lines, no deletions. No public API changes.
Test plan
Manual:
ToolCallUpdatewhosetitle is the model-generated phrase (existing behavior).
GOOSE_DISABLE_TOOL_CALL_SUMMARY=true, only the initialToolCallnotification is sent (with the synchronous fallback title); no follow-up
ToolCallUpdatefor the title; noprovider.complete_fastcall appears inprovider logs.
No unit tests added — the existing
GOOSE_DISABLE_SESSION_NAMINGopt-outships without one and follows the same pattern. Happy to add a test if a
reviewer prefers; would likely involve a mock
Providerasserting thatcomplete_fastis not invoked when the flag is set.Checklist
cargo fmt(formatting matches surrounding code)cargo clippy --all-targets -- -D warnings(will run via CI)cargo test(will run via CI)