Repository navigation
[Bug]: Claude steers abort automatic context compaction #25796
Description
Before submitting
- I searched existing issues and did not find a duplicate of this Claude adapter failure.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Run a long Claude thread that receives messages from other threads through
t3_thread_sendwithmode: "steer". - Let the receiving thread reach automatic context compaction.
- Send a steer while its timeline shows "Compacting context". Repeat while compaction is running.
I also reproduced the failure directly with @anthropic-ai/claude-agent-sdk 0.3.276 and Claude Code 2.1.310: offer a user message with priority: "now" when the output stream reports system/status: compacting. The synthetic reproduction used Sonnet 5.5 and a lowered automatic-compaction threshold.
Expected behavior
Hold steers while automatic compaction is running. Once compaction finishes and the opening prompt is ready, deliver waiting messages together, in order, to the same active T3 turn rather than waiting for that entire turn to finish. Explicit Stop should still cancel undelivered input.
Please confirm this intended behavior during triage. The proposed fix also needs to preserve message outcomes and delegated-delivery acknowledgments when the turn stops or is replaced.
Actual behavior
ClaudeAdapterV2.steerTurn offers the message immediately with priority: "now". Claude aborts compaction, returns an aborted_streaming segment, and starts compacting again. Frequent reports to a coordinator can repeatedly restart compaction.
In one observed thread, 11 compactions ended with aborted, each 39–94 ms after a steer arrived. Other independent compaction/server failures also occurred; this report does not attribute those failures to steering.
Impact
Major degradation or frequent failure
Version or commit
T3 Code 0.1.3-nightly.20261024.3643; Claude Code 2.1.310; Agent SDK 0.3.276.
Environment
macOS 27.0, T3 Code desktop Nightly, Claude provider.
Logs or stack traces
Minimal synthetic reproduction, with message contents and identifiers omitted:
status {"status":"compacting"}
OFFER priority=now
status {"status":null,"compact_result":"failed","compact_error":"aborted"} // 6 ms later
RESULT {"subtype":"success","terminal_reason":"aborted_streaming"}
status {"status":"compacting"} // starts over
Workaround
Avoid steering while compaction is running. Queueing avoids this interruption but delays the input until the entire active turn ends, so it does not provide the expected in-turn steering behavior.
Related
- [Bug]: Follow-ups queue instead of steering during automatic compaction #24137 describes composer follow-ups being queued during automatic compaction; fix(composer): steer instead of queueing during automatic compaction #24138 changes that client behavior. This report concerns the Claude server-side delivery path, already reachable through MCP.
- fix(server): Claude steers sent while a turn starts no longer run before its prompt #22552 addresses steers overtaking the opening prompt, a related delivery boundary.
- [Bug]: Claude request and compaction phases can remain stuck indefinitely #24842 concerns request/compaction phases that never progress. A general watchdog is outside this report.
Activity
fix(claude): held steers report real delivery and Stop cancels them
kevingatera commentedon Oct 31, 2026
Also hit on a newer nightly, via cross-thread steers from delegated agents (not a composer steer).
t3_thread_send, steer mode) arrived during compaction.Environment: T3 Code
0.1.4-nightly.20261027.3796(server on Linux,t3 serve), Claude Code2.1.312, Claude provider.Agree with the expected behavior in the report: hold steers during compaction, then deliver them together into the same turn.