github / github/copilot-cli

[Bug] Subagents executing long tool-call sequences in a single turn fail prompt caching and compound token consumption

Aberta
#4,829 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

triage
Linguagem predominante
Shell
Estrelas
11.2k
Forks
1.9k
Merge médio
14h 16min
PRs com merge (30d)
6

Descrição

Environment
  • GitHub Copilot CLI v1.0.83
  • OS: Windows 11 / PowerShell
  • Primary Model: Gemini 3.8 Flash
Problem Description

When executing autonomous subagents (such as custom agents via the task tool), the agent harness allows a subagent to run hundreds of tool calls within a single monolithic turn (Turn 0) without yielding or compacting context.

Because each tool execution (file edits, test outputs, build diagnostics) is appended sequentially to the conversation history of the active turn:

  1. Prompt Caching is defeated: The dynamic append of intermediate tool results changes the prompt prefix and prevents effective provider-side KV prompt caching.
  2. Exponential Token Compounding: Every subsequent tool call re-submits the entire growing history (75k-100k+ tokens) to the model. In our session, a single subagent ran ~750 tool calls in Turn 0, compounding to over 120 million tokens consumed in under 40 minutes on local test/edit loops.
  3. No Turn-Yielding / Throttling Mechanism: The agent does not yield control or checkpoint its context, and background interrupt signals (write_agent) are queued rather than preempting execution.
Expected Behavior
  • Subagent harnesses should enforce turn boundaries or context compaction/eviction after a reasonable threshold of consecutive tool calls (e.g. 15-20 tool calls) to preserve prompt caching and avoid runaway token compounding.
  • An explicit cancellation/stop API (stop_agent) should exist to immediately interrupt runaway background subagents.
Actual Behavior

The subagent executed 750+ tool calls in Turn 0 without yielding, burning >120M tokens on repeated compilation and test iterations, and could not be preemptively stopped via standard agent messaging.

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece pelos pontos de entrada do harness de subagentes por trás da task tool e inspecione como as mensagens write_agent são enfileiradas durante longas sequências de tool-call do Turn 0. Reproduza o comportamento de 750 chamadas no Windows 11/PowerShell e, em seguida, verifique se o harness cede ou compacta o contexto e se um cancelamento no estilo stop_agent pode interromper um subagente em execução.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
powershell, shell
Domínio
ai, cli, performance
Tipo de issue
Bug
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Ativa
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.