Repository navigation
Correct Claude team mechanics and stale feature dispositions #813
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| # Decision: correct current agent-team carriers and preserve their history | ||
|
|
||
| Date: 2026-10-06. Lane: foundation. Status: decided; repository record awaiting | ||
| independent review. | ||
|
|
||
| ## Context | ||
|
|
||
| The [October 5 context-budget decision](2026-10-05-harness-context-budget.md#relocated-passage-contracts-amended-by-pr-726) | ||
| bound relocated workflow passages to frozen byte contracts. Its passage 09/10 | ||
| claims need corrections in the current workflow guidance. The command center's | ||
| October 6 feature check and historical-record preservation direction authorize | ||
| the current-carrier correction and this separate linked record. | ||
|
|
||
| ## Decision | ||
|
|
||
| Correct the [current agent-team guidance](../../examples/claude-native/workflows/README.md) | ||
| and the eight named rows in the [upstream dispositions catalog](../../catalogs/foundation/upstream-surface-dispositions.json). | ||
| The agent-teams switch is enabled under CC rule 18's narrow scope. Catalog | ||
| states retain the supported schema; applied settings, pending hook installation | ||
| and upstream defaults remain distinct. | ||
|
|
||
| The docs give an in-process teammate its definition's effort; the v2.1.288 | ||
| changelog confirms that behavior only for plugin agents. The configured lead | ||
| and project-agent paths here both specify max, so that distinction does not | ||
| change their declared effort. Actual runtime effort for user/project agents | ||
| remains unverified. Opus/Sonnet 5.5 have no shared task list without the explicit | ||
| TODO-tool opt-in; current guidance records that qualification. | ||
|
|
||
| Update the active [passage contracts](../../tests/fixtures/harness-context-moves/contracts.json) | ||
| to the new [09-20261006.txt](../../tests/fixtures/harness-context-moves/09-20261006.txt) | ||
| and [10-20261006.txt](../../tests/fixtures/harness-context-moves/10-20261006.txt) | ||
| fixtures: 865 and 2,034 UTF-8 bytes including their terminating line endings. | ||
| These are corrected-text contracts, not new context-savings measurements or | ||
| native acceptance results. The original [09.txt](../../tests/fixtures/harness-context-moves/09.txt) | ||
| and [10.txt](../../tests/fixtures/harness-context-moves/10.txt) snapshots, the | ||
| October 5 decision and its measurements remain unchanged. The other nine | ||
| active contracts keep their original bytes. | ||
|
|
||
| ## Alternatives and revisit condition | ||
|
|
||
| Retaining the old current guidance would preserve claims contradicted or | ||
| qualified by upstream evidence. Rewriting the October 5 record or its snapshots | ||
| would obscure what was originally measured. Correcting the current carriers | ||
| with new contracts and this linked record preserves both the usable guidance | ||
| and its evidence history. | ||
|
|
||
| Revisit the guidance when newer upstream docs or releases change team effort, | ||
| task-tool availability or the named feature defaults, or when the CC changes | ||
| rule 18's scope. Compare the new primary evidence with these pinned sources; | ||
| issue another linked record and update current carriers if it supersedes them. | ||
|
|
||
| ## Sources | ||
|
|
||
| - [Agent-team docs, effort](https://code.claude.com/docs/en/agent-teams.md#L277) | ||
| and [in-process default](https://code.claude.com/docs/en/agent-teams.md#L107-L111). | ||
| - [Claude Code v2.1.292 changelog, v2.1.288 plugin-agent effort fix](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L365). | ||
| - [Same pinned changelog, v2.1.268 TODO-tool qualification](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L1986). | ||
| - Private source locators: `coordination/e2e-truth-20261006/feature-gap-wf_2da8a9ff-307.json#/result/final`, | ||
| `coordination/command-center/cc-tools/CC-RULES-ADDENDUM-20261006.md:9-23`, and | ||
| CC item `task-ns2604-coop-20261006T223917Z`, point 6. Each changed catalog row | ||
| carries its own upstream docs or versioned changelog citation. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1172,12 +1172,12 @@ rule here, such as the effort arms for the child roles. | |
|
|
||
| ## Native workflow mechanics relocated (2026-10-05) | ||
|
|
||
| - With agent teams on, a named spawn becomes a teammate at the lead's session effort in the lead's working directory, without its definition's `skills` or `isolation`: name spawns only for teammates, never for a role that relies on `skills`, `omitClaudeMd` or `isolation`, and start a run that needs them with `claude --settings '{"env":{"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":"0"}}'`. | ||
| - With agent teams on, a named spawn becomes a teammate in the lead's working directory. The [agent-team docs (line 277)](https://code.claude.com/docs/en/agent-teams.md#L277) give an in-process teammate its definition's effort; the [2.1.288 changelog (line 365)](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L365) confirms this specifically for plugin-defined agents. The lead and project definitions here both specify `max`, so either path selects the same configured effort; runtime effort for user/project definitions remains unverified. Definition `skills` and `isolation` do not apply: name spawns only for teammates, never for a role that relies on `skills`, `omitClaudeMd` or `isolation`, and start a run that needs them with `claude --settings '{"env":{"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":"0"}}'`. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When an operator follows the repository's linked native recipe instead of this README passage, they still receive the opposite effort rule: AGENTS.md reference: AGENTS.md:L3-L3 Useful? React with 👍 / 👎. |
||
|
|
||
| - In Ultracode, pass an explicit task-matched `model` and `effort: 'max'` on each `agent()` call; project agents declare `effort: max`. A stage that names no model takes its definition's, else `CLAUDE_CODE_SUBAGENT_MODEL`, else the lead's, so set `CLAUDE_CODE_SUBAGENT_MODEL=opus`. On Claude Code 2.1.284 Ultracode stays on at any effort and the `ultracode` setting sets none: a terminal session started through the ecosystem `claude` launcher runs at `max` (`claude --effort xhigh` opts out; the default rests on the user's requirement, not on a measured gain), and a launch that skips it (IDE, desktop, web) uses the saved per-model xhigh (`modelSettings`, or `effortLevel` in a project file; `max` cannot be saved). Headless `-p` runs pass `--effort` per call site, and `CLAUDE_CODE_EFFORT_LEVEL` stays unset at every scope because it overrides every worker's effort. | ||
| - Size each workflow to its task under the `unrestricted` size guideline and within the runtime limits (4,096 items per `parallel()`/`pipeline()` call, 1,000 agents per run). Avoid unintended model inheritance, unbounded fan-out and repeated word-count calls. | ||
| - Cap concurrency per host with `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS`, starting at 8 under the client's default of min(16, available CPUs − 2) per workflow (the bundled `/workflow-authoring` reference); the setting accepts 1–256 from 2.1.269. | ||
| - Children do not fan out a second layer (`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1`). Teammates report through the shared task list and idle notifications rather than a summarized return value, so the lead collects their results and has any claim verified on Opus before acting on it. | ||
| - Children do not fan out a second layer (`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1`). On Opus 5.5 and Sonnet 5.5, teammates coordinate through `SendMessage` and idle notifications; they have no shared task list without opting back into the withdrawn Task tools with `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ([2.1.233, line 2985](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L2985), [2.1.268, line 1986](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L1986)). The lead collects their results and has any claim verified on Opus before acting on it. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
After this line corrects the current instructions to say that 5.5 teammates have no shared task list without the opt-in, Useful? React with 👍 / 👎. |
||
|
|
||
| - Message another Claude Code session with SendMessage, and a Codex session with `codex queue --thread <its CODEX_THREAD_ID> --message "$(cat <<'MSG'` followed by the text, a blank line, `reply: SendMessage to <your session name>`, `MSG` and `)"`, each on its own line: a quoted heredoc, never the text inline. | ||
| - Codex receives queued messages between turns, never mid-turn; expect up to about 20 s delay when it is idle. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| - With agent teams on, a named spawn becomes a teammate in the lead's working directory. The [agent-team docs (line 277)](https://code.claude.com/docs/en/agent-teams.md#L277) give an in-process teammate its definition's effort; the [2.1.288 changelog (line 365)](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L365) confirms this specifically for plugin-defined agents. The lead and project definitions here both specify `max`, so either path selects the same configured effort; runtime effort for user/project definitions remains unverified. Definition `skills` and `isolation` do not apply: name spawns only for teammates, never for a role that relies on `skills`, `omitClaudeMd` or `isolation`, and start a run that needs them with `claude --settings '{"env":{"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":"0"}}'`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For any non-CC session rendered from the new-WSL profile, this scope is not actually enforced:
adoption/new-wsl/templates/claude.settings.additions.jsonsetsCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1globally in user settings, and itsclient-config-map.jsonentry is ordinarypracticewiring with no teammate-count or write restriction. Sinceexamples/claude-native/workflows/README.mdconfirms that any named spawn becomes a teammate while the switch is enabled, this row incorrectly records a narrow adoption while the carrier applies host-wide; scope the carrier/launcher accordingly or record the actual scope.AGENTS.md reference: AGENTS.md:L17-L18
Useful? React with 👍 / 👎.