Skip to content

Team-mode sessions re-inject full governance prompt + task board on every turn, including idle pings — significant token waste on long sessions #4183

Description

@RickSides

Summary

In Team-mode conversations, the full Team Governance / role system prompt (~2,500+ words: governance priority order, tool usage tables, "standing by" instructions, bug-fix priority, shutdown protocol, etc.) and the full current task board table appear to be re-injected into a member's context on essentially every single turn — including turns that are purely an idle_notification-style ping carrying zero new actionable information.

Over a long-running, multi-hour Team session (a real-world example: an extended MCP/OAuth connector debugging session spanning ~30+ turns across several teammates), this repeated re-injection dominates token usage far more than the actual work content, memory files, or task payloads combined. Every idle/heartbeat turn pays the full fixed cost of the governance prompt plus a task board snapshot, even when nothing has changed since the previous turn.

Impact

  • Significant, avoidable token/cost overhead on long-running Team sessions, which are exactly the sessions where this compounds the most.
  • Makes idle/heartbeat-style turns disproportionately expensive relative to the information they actually carry (often none).
  • Scales with team size and session length — the more teammates and the longer a session runs, the more this repeated fixed cost adds up.

Suggested improvements

  1. Don't re-inject the full system/role prompt on pure idle-notification turns. If a turn carries no actionable content (no new task assignment, no message requiring a response), skip re-sending the full governance/role prompt — only re-inject it when something has actually changed (a new task, a role change, a config change) or when a real response is required.
  2. Don't re-send the full task board table every turn if it's unchanged. Diff against the last-sent board state and only include a delta, or omit the table entirely when nothing has moved, rather than re-serializing the entire table on every wake.
  3. Consider a lighter-weight idle/heartbeat event format that doesn't require a full context reload at all — e.g. a minimal "no new work, still standing by" signal distinct from the full turn-context payload, so an idle ping doesn't need to carry the same weight as a real task assignment.

Related

This is a distinct concern from the MCP/connector issues found during the session referenced above (#4106, #4118, #4119, #4130) — those are functional/correctness bugs in MCP tool loading and OAuth; this is a cost/efficiency concern in how Team turn context is constructed. Flagging together since they were discovered in the same long session and that session is a good concrete illustration of the token-cost problem in practice (many idle/heartbeat turns interspersed with real diagnostic work, each idle turn still paying the full context-reinjection cost).

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions