You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: ACP silently drops a reasoning/config option when set_config_option fails transiently, and never retries it #33117
Deterministic repro using the scripted ACP protocol replay in AcpRegistryAdapterV2.test.ts:
Open an ACP session whose model config option is default. The agent does not advertise a thinking option yet.
Start a turn with model named and options thinking=high, plus an option the session never advertises (unavailable=x).
The agent accepts session/set_config_option model=named and now advertises thinking (low/high).
T3 sends session/set_config_option thinking=high. The agent answers with a JSON-RPC error that is not invalid-params, for example -32603 internal error (a transient failure or a dropped request).
Start another turn with the same selection.
Expected behavior
Only invalid-params (-32602), which means the agent refused the value, should be logged and skipped. Any other request error should fail session configuration. That leaves the selection unapplied, so the next turn re-sends thinking=high. configureSession already handles the model write this way ("Invalid params is the agent refusing the value… Other failures, such as sign-in or a lost connection, keep their own error"). Options never advertised by the session should still be skipped.
Actual behavior
In packages/provider-acp/src/server/adapter.ts, the option loop in configureSession catches everyAcpRequestError from setConfigOption, logs "ACP session rejected a configuration option value" and continues. The turn starts on the agent's current thinking level, not the requested high. activeSelection is then set to the requested selection, so later turns treat it as applied and never retry it. The user sees the requested reasoning level in the UI while the agent runs on another one, with nothing but a server log warning.
Impact
Minor bug or occasional failure. It only happens when an option write fails for a reason other than refusal, but then the wrong setting persists for the rest of the session.
Activity