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
Confirming the same behavior on an ACP Registry provider other than Copilot (agy-acp, provider: acpRegistry, T3 desktop on macOS).
Every ordinary user message — including short follow-ups in one uninterrupted session with no config change — gets the same two blocks appended: <runtime_info> and the full <pull_request_linking> policy. Measured in T3's own message store: each message is stored twice, a raw copy (creationSource: "web", just the user text) and a provider-side copy (creationSource: "provider", user text + ~1.5KB of appended context). The thread view renders the provider-side copy, so the appended blocks are visible as pasted text on every message.
No settings toggle exists to disable the append (checked settings.json, client-settings.json, desktop-settings.json). The blocks are harmless context for the model, but the per-turn re-injection duplicates ~1.5KB of text into the durable conversation and clutters the visible history on every turn.
#24466 (closed as a duplicate of this issue) has the precise code diagnosis (resolvePromptParts unconditionally appends buildRuntimeInstructions(...) with no change-tracking, unlike the larger instruction block).
Root cause and a working fix, confirmed with Copilot ACP.
Cause: in packages/provider-acp/src/server/adapter.ts (resolvePromptParts), the orchestration instructions (t3AcpPromptWithInstructions) are only resent when the mode or tools change. But the separate buildRuntimeInstructions block (<runtime_info> + <pull_request_linking>) is pushed onto every non-slash prompt without any check. Since ACP sessions keep their own history, that block piles up in the native conversation on every turn.
Fix: remember, per ACP session, the runtime block last sent, and send it again only when its text changes (e.g. a model switch), after compaction, or for a new session. It's recorded only after a successful session/prompt, next to the existing instruction state, and cleared on runtime replacement. It applies to all ACP agents.
I'm using this branch as my daily T3 build with Copilot, and it seems to work thus far: follow-up messages no longer include the runtime/PR instructions.
Activity
Ylandolsi commentedon Oct 24, 2026
similar/related issues : #24466 #24465
shac612 commentedon Oct 27, 2026
Confirming the same behavior on an ACP Registry provider other than Copilot (agy-acp, provider: acpRegistry, T3 desktop on macOS).
Every ordinary user message — including short follow-ups in one uninterrupted session with no config change — gets the same two blocks appended: <runtime_info> and the full <pull_request_linking> policy. Measured in T3's own message store: each message is stored twice, a raw copy (creationSource: "web", just the user text) and a provider-side copy (creationSource: "provider", user text + ~1.5KB of appended context). The thread view renders the provider-side copy, so the appended blocks are visible as pasted text on every message.
No settings toggle exists to disable the append (checked settings.json, client-settings.json, desktop-settings.json). The blocks are harmless context for the model, but the per-turn re-injection duplicates ~1.5KB of text into the durable conversation and clutters the visible history on every turn.
#24466 (closed as a duplicate of this issue) has the precise code diagnosis (resolvePromptParts unconditionally appends buildRuntimeInstructions(...) with no change-tracking, unlike the larger instruction block).
mmazur commentedon Oct 28, 2026
Root cause and a working fix, confirmed with Copilot ACP.
Cause: in
packages/provider-acp/src/server/adapter.ts(resolvePromptParts), the orchestration instructions (t3AcpPromptWithInstructions) are only resent when the mode or tools change. But the separatebuildRuntimeInstructionsblock (<runtime_info>+<pull_request_linking>) is pushed onto every non-slash prompt without any check. Since ACP sessions keep their own history, that block piles up in the native conversation on every turn.Fix: remember, per ACP session, the runtime block last sent, and send it again only when its text changes (e.g. a model switch), after compaction, or for a new session. It's recorded only after a successful
session/prompt, next to the existing instruction state, and cleared on runtime replacement. It applies to all ACP agents.Branch (one commit on top of
v0.1.3, with an extendedAcpAdapterV2.test.tscase that fails before the fix): https://github.com/mmazur/t3code/tree/fix/acp-repeated-instructionsCommit: mmazur@ec5d536
I'm using this branch as my daily T3 build with Copilot, and it seems to work thus far: follow-up messages no longer include the runtime/PR instructions.
fix(acp): agents get T3's runtime notes once per session, not on ever…