Repository navigation
[Bug]: ACP appends unchanged runtime and PR instructions to every ordinary prompt #24466
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Problem
Every ordinary ACP user message gets <runtime_info> and the full <pull_request_linking> policy appended, even within one uninterrupted session with unchanged configuration. These duplicate instructions become part of the durable conversation on every turn.
Steps to reproduce
- Start a GitHub Copilot ACP Registry thread and complete its initial turn.
- Keep the thread and session open; do not settle, reopen, compact, switch providers, or change modes.
- Send
And again, thenTwo more times. - Inspect the actual user messages in Copilot's native session history or resume UI.
The last consecutive messages were inspected in a saved native transcript. The user confirms there was no settling/unsettling between these follow-ups. No new paid provider reproduction was run during investigation.
Expected behavior
Unchanged runtime information and PR workflow policy should not be appended as new user-conversation content on every turn. Deliver persistent instructions once per native conversation and refresh only for a relevant change or context loss, preserving legitimate updates such as model changes and compaction recovery.
Actual behavior and evidence
And again: 9 characters of user input becomes a 1,425-character message.Two more times: 14 characters becomes a 1,430-character message.- Both include the same 1,416 characters of added context, including a 1,163-character PR-linking/watch-policy block.
- These are ordinary greeting follow-ups with no PR activity or relevant configuration change.
This occurs even when the larger <t3_code_instructions> block is correctly omitted. It is independent of settling/reopening a thread.
Copilot's usage records report 352 and 355 cache-write tokens on these two turns, respectively. Prior context was largely cached; this report does not claim that the full context was uncached or that all provider tool-schema tokens are caused by T3.
Current-main diagnosis
Verified against main at d53873b6a4799e87afd63c8d288ef0089f5a3748:
resolvePromptPartsunconditionally appendsbuildRuntimeInstructions(...)for every non-slash-command prompt.buildRuntimeInstructionsreturns runtime information plus the complete PR policy.- The larger ACP instruction block has change tracking, but this suffix has no comparable deduplication.
Impact
Unnecessary input-token/context growth and cluttered native history on every ordinary message, including very short follow-ups. Current main still follows this path; the exact current suffix wording has grown/changed since the observed session.
Version and environment
Observed October 24, 2026, on Linux x86_64, GitHub Copilot CLI 1.0.103, ACP Registry, model gpt-6-luna. The terminal's installed T3 CLI reports v0.1.0; the exact serving-process build for the incident was not established. Relevant behavior remains in current main as cited above. No raw transcript or private environment identifiers are uploaded.
Related reports
#19384 / #19393 fixed the same appended block breaking native slash commands. That fix excludes slash commands, but ordinary messages still receive the suffix. #22369 concerns the content and configurability of the PR-watching policy, not its repeated delivery. Neither covers this per-turn duplication.
The full browser/orchestration block being reinjected after settle/reopen is tracked separately in #24465.
Investigation and report prepared with Codex GPT-6.1-Sol through T3 Code.
Activity
juliusmarminge commentedon Oct 24, 2026
Duplicate of #24185: unchanged instructions are appended on each ordinary Copilot ACP turn. This report adds a precise runtime/PR suffix diagnosis and transcript measurements for that same symptom. The settle/reopen trigger remains separately tracked in #24465.