This page records measured Codex session tools and their limits. The section "Own-session closure" also records the closure measures of Claude Code. Each row gives the date of its measure, and the version of each tool that shows its version. A help entry or schema method shows an available interface. It does not prove that an interactive role session can use it.
| Need | Claude Code tool | Result | Exact call or surface | Observed output | Version and date | Limit |
|---|---|---|---|---|---|---|
| Send a message to another session | SendMessage |
not measured |
codex queue --help |
Help described UUID or exact-name targets and --resume. |
Codex CLI 0.166.0, 2026-11-05 | Syntax only. Acceptance, receipt, turn start, and reply were not measured. Idle, active, and retained recipients; UUID and exact-name targets; and sends with and without --resume were not tested. Unavailable targets, ambiguous names, failed identity reads, resume failures, complete discovery, pagination, and limits remain unmeasured. |
| List the sessions and read the own name | ListAgents |
session list: not measured own name: not measured |
codex app-server generate-json-schema --out /tmp/tasker-664-measures/schema --experimental; local app-server thread/read for 01a1aa83-b520-77a1-9730-ec45693d5ca0 |
The ClientRequest schema had 179 distinct methods, including thread/list, thread/read, and thread/name/set. The read returned thread.id and thread.sessionId matching the queried ID, thread.name=orchestrator-m28, thread.source=cli, and thread.cwd=/home/codeguru/src/mine/tasker. |
Codex CLI, daemon, and app-server 0.166.0, 2026-11-05 | Thread.sessionId is shared by threads in a session tree. The read identified the parent orchestrator, not this task subagent's pane or own name. Pagination and limits were not measured. |
| Run a job at a set time | CronCreate |
create interface: no match found creation operation: not measured firing: not measured |
ClientRequest schema from codex app-server generate-json-schema; native team tool list |
No schema method contained cron, schedule, automation, or job. The native team tool list had no scheduled-job create tool. |
Codex CLI 0.166.0; native team tool version not exposed; 2026-11-05 | This discovery covered only the named schema and tool list. Job creation and firing were not measured. It does not show that no scheduling tool exists elsewhere. |
| List and delete such a job | CronList, CronDelete |
list interface: no match found delete interface: no match found list operation: not measured delete operation: not measured |
ClientRequest schema from codex app-server generate-json-schema; native team tool list |
No schema method contained cron, schedule, automation, or job. The native team tool list had no scheduled-job list or delete tool. |
Codex CLI 0.166.0; native team tool version not exposed; 2026-11-05 | This discovery covered only the named schema and tool list. Listing, deletion, and job firing were not measured. It does not show that no scheduling tool exists elsewhere. |
| Start a subagent, for example a review agent | The Agent tool | measured match |
collaboration.spawn_agent({task_name:"codeguru42_tasker_664",fork_turns:"none",message:<ticket prompt>}) |
The call returned /root/codeguru42_tasker_664. |
Native team tool version not exposed; 2026-11-05 | The ticket prompt body was not included in the fact-test report. This observation does not prove that a Herdr agent or independent role session started. |
| Name a subagent, and restart it by a message | SendMessage |
name: measured match message restart: measured match |
collaboration.send_messagecollaboration.followup_task to the returned target |
The message reached the target and the recipient acted. The follow-up resumed the target after an interim final answer. |
Native team tool version not exposed; 2026-11-05 | This measures native team addressing only. It does not prove independent role-session messaging, native exact-name lookup, or a Herdr start. This measures native team restart only. It does not prove independent role-session restart. |
| Get the final report of a subagent | The hand-back of a subagent | measured match |
collaboration.wait_agent |
The parent received reports from the target. | Native team tool version not exposed; 2026-11-05 | This measures report delivery to the parent through the native team route only. |
| Get a report when a background command ends | run_in_background |
not measured |
exec_command of sleep 2; later write_stdin |
exec_command returned a session ID and no pushed completion report. write_stdin later returned exit 0. |
execution tool version not exposed; 2026-11-05 | Polling was observed. A pushed report remains unmeasured. |
| Keep notes across sessions | The memory folder | not measured |
Available native team tool descriptions inspected: collaboration.spawn_agent, collaboration.send_message, collaboration.followup_task, and collaboration.wait_agent; write test not run |
The memory rule barred a write test. No persistent-notes result was observed. | Native team tool version not exposed; 2026-11-05 | The supplied report gives no description text or result about a persistent notes interface. The memory rule bars a write test. |
| Run a skill of the repo | /session-review |
not measured |
/session-review candidate; not run |
No native skill invocation was measured. | repo-skill version not exposed; 2026-11-05 | The task-subagent limit in docs/dev/limits.md bars this skill because it can delete memory notes. |
| Run an installed skill | The Skill tool | not measured |
Available skill catalog and ALL_TOOLS.filter(x => /skill/i.test(x.name)) on 2026-11-05 |
The available skill catalog listed simple-english. The native tool-name inventory returned an empty list. Its tool version was not exposed. This task subagent loaded simple-english from its SKILL.md as instructions. No native Skill call ran. |
available skill catalog and native tool-name inventory versions not exposed; 2026-11-05 | Loading skill instructions does not measure a native Skill tool invocation. |
| Name a session at its start | -n <name> |
not measured |
codex --help; app-server schema inspection |
codex --help listed neither -n nor a native rename command was exercised. The schema included thread/name/set. |
Codex CLI and app-server 0.166.0; 2026-11-05 | Herdr interactive start, native rename, same-UUID read-back, exact-name lookup, automatic Herdr binding, and replacement binding were not measured. Expected planner-<slug> and orchestrator-<slug> names remain unmeasured. Timing before creation, after creation, before the first prompt, and after the first turn remains unresolved. |
| Give the model, the effort and the first prompt at the start | --model--effortThe last argument |
model: not measured effort: not measured first prompt: not measured |
codex --help entries --model and --effort; [PROMPT] form; interactive launch not run |
Model: --model listed. Effort: help did not list --effort. First prompt: interactive launch not run. The unrun interactive candidate was codex -C /tmp/tasker-664-measures [PROMPT]; the rejected Herdr test-agent start left all three results unmeasured. |
Codex CLI 0.166.0; 2026-11-05 | Interactive model and effort, including max, and first-prompt behavior were not measured. |
Permit the tasker commands |
.claude/settings.json |
not measured |
codex --help entries --approve-for-me, --sandbox, and --ask-for-approval; interactive permission test not run |
No effective permission mode was observed. | Codex CLI 0.166.0; 2026-11-05 | The rejected interactive setup left effective permission mode, reviewer, policy, and sandbox unmeasured. |
| Ask the user before a set of actions | permissions.ask in $HOME/.claude/settings.json |
reviewer: not measured policy: not measured sandbox: not measured interactive user prompt: not measured |
codex --help entries --approve-for-me, --sandbox, and --ask-for-approval; interactive test not run |
The examined help flags were candidates only. The approved Herdr interactive start was withdrawn, so no effective permission mode, reviewer, policy, or sandbox was read. | Codex CLI 0.166.0; 2026-11-05 | The help candidates do not establish the effective interactive mode, reviewer, policy, or sandbox. |
| Hold the rules of the user for each session | $HOME/.claude/CLAUDE.md |
not measured |
Unrun codex --help candidate: codex -C /tmp/tasker-664-measures [PROMPT]; rejected Herdr test-agent start |
User-rules behavior was not run. The candidate command alone would not prove the result. The rejected Herdr test-agent start left it unmeasured. | Codex CLI 0.166.0; 2026-11-05 | The approved test tab and pane were closed without a test agent start. |
| Read the context use of a session | The status line | not measured |
Unrun codex --help candidate: codex -C /tmp/tasker-664-measures [PROMPT]; rejected Herdr test-agent start |
Context-use status was not run. The candidate command alone would not prove the result. The rejected Herdr test-agent start left it unmeasured. | Codex CLI 0.166.0; 2026-11-05 | The approved test tab and pane were closed without a test agent start. |
| Read the title and the state of a session in herdr | The Herdr session row | Herdr title: measured match Herdr state: measured match UUID-to-pane/workspace: not measured |
herdr agent get wT:p4herdr agent get wT:p4Shell context; app-server thread/read; herdr pane current --current; herdr integration status |
The command exited 0 and returned agent="codex", agent_status="working", pane_id="wT:p4", tab_id="wT:t4", and workspace_id="wT"; the exact display title is below; no agent_session value was returned.The returned agent object had agent_status="working" for pane wT:p4.The shell supplied child CODEX_THREAD_ID=01a1aa8a-2f92-71e0-80ef-a780137dbbd1 and parent CODEX_SESSION_ID=01a1aa83-b520-77a1-9730-ec45693d5ca0. Local app-server thread/read of the parent returned thread.name=orchestrator-m28, thread.source=cli, and thread.cwd=/home/codeguru/src/mine/tasker. herdr pane current --current used inherited context and returned wT:t4 and wT:p4; herdr integration status reported codex: not installed. |
Herdr client and server 0.9.3; 2026-11-05 Herdr client and server 0.9.3; 2026-11-05 Codex CLI, daemon, and app-server 0.166.0; Herdr client and server 0.9.3; 2026-11-05 |
The terminal title is a display title, not an exact Codex session name. This applies to existing pane wT:p4; it does not bind a Codex UUID to the pane.The record had no agent_session UUID. The inherited context did not identify the child thread. Correct and stale inherited context, failed read, no match, and several matches did not run. Automatic workspace selection remains blocked until a measured current UUID joins to exactly one pane and its current workspace. |
The supplied herdr agent get wT:p4 command was cd /tmp/tasker-664-measures || exit 1; herdr agent get wT:p4. Its
terminal_title_stripped value was Bind orchestrator-m28 session | tasker. The command exited 0 and returned
agent="codex", agent_status="working", pane_id="wT:p4", tab_id="wT:t4", and workspace_id="wT". It returned no
agent_session value.
This section records the measures of how a role session closes itself. The test sessions of the measures were started by a task subagent in new tabs. Each row gives one measure for one kind. The kind is claude (Claude Code) or codex (Codex). A sender is the session that closes itself. A recipient is the session that gets its message, and a replacement is a new session with the name of the sender.
| Measure | Kind | Result | Exact call or surface | Observed output | Version and date | Limit |
|---|---|---|---|---|---|---|
| The own-session closure | claude | Tab: measured match Process: measured match |
The sender ran herdr tab close wB:t1F as its last tool call. Then herdr tab get wB:t1F and ps -o pid=,comm= -p 1556585 ran. |
herdr tab get gave tab_not_found and exit code 1. ps printed nothing and gave exit code 1. Before the close, ps gave 1556585 claude for the parent of the shell of the sender. |
Claude Code 2.1.323; herdr 0.9.3; 2026-11-13 | The test used one idle recipient and a tab with one pane. A tab with more than one pane did not run. |
| The binding of a session to its pane | claude | measured match | The environment of the sender, herdr pane current --current, and the row of herdr agent list with the name measure-a-claude. |
The environment gave HERDR_PANE_ID=wB:p24, HERDR_TAB_ID=wB:t1F and HERDR_WORKSPACE_ID=wB. herdr pane current --current gave the same pane and tab. The row of herdr agent list gave pane_id="wB:p24", tab_id="wB:t1F" and the session 5ca12b72-eacd-4cdb-9730-1b95f6d2fdaf. |
Claude Code 2.1.323; herdr 0.9.3; 2026-11-13 | This covers only a session that herdr started in a new pane. It does not cover the stale inherited ids of an older role session. |
| The survival of a final report | claude | no match found | grep -F 'FINAL E19A5F13314E7F74' on the one record of the sender, 5ca12b72-eacd-4cdb-9730-1b95f6d2fdaf.jsonl. |
The search found no line. The last line of the record was the RECEIPT message of the recipient. No later assistant line was in the record. | Claude Code 2.1.323; herdr 0.9.3; 2026-11-13 | The tab closed before Claude Code wrote the reply of the sender. The record of 2026-10-25 in handoff-operator.md shows the same order. A wait before the close did not run. |
| The observer read | claude | measured match | The observer command of the recipient, then herdr tab get wB:t1F, herdr pane get wB:p24, herdr agent get wB:p24 and ps -o pid=,comm= -p 1556585. |
Read 1 of herdr pane get wB:p24 gave exit code 0. Read 2 gave pane_not_found and exit code 1. herdr tab get gave tab_not_found. The later reads gave tab_not_found, pane_not_found and agent_not_found, each with exit code 1, and ps printed nothing. |
Claude Code 2.1.323; herdr 0.9.3; 2026-11-13 | The recipient was idle. A busy recipient, a blocked recipient and a wait at a permission prompt did not run. |
| The receipt | claude | measured match | SendMessage from the recipient to measure-a-claude. |
The send result was success with msg_id db4d43b3-3949-4e16-9616-8c21aa6f877e. It said that the message was in the inbox of the session and not yet read. The record of the recipient held the line DELEGATION e19a5f13314e7f74 from measure-a-claude id pane wB:p24 tab wB:t1F pid 1556585 at 18:12:27 UTC. The record of the sender held the reply RECEIPT e19a5f13314e7f74 at 18:12:32 UTC. |
Claude Code 2.1.323; herdr 0.9.3; 2026-11-13 | The DELEGATION message had an empty id, so the send used only the name. The receipt does not tell two sessions with the same name apart. |
| The replacement check | claude | no match found | SendMessage of PING e19a5f13314e7f74 to measure-a-claude, herdr agent list and ListAgents. |
The replacement had pane wB:p25, tab wB:t1G, pid 1565594 and session f3601748-47c5-4735-b3f7-37385c6aa9cf. The recipient told it from the sender by its pane, tab and pid. The second run of the observer command gave pane_not_found and tab_not_found for wB:p24. herdr agent list and ListAgents each showed one session with the name measure-a-claude, the replacement. The PING reached the replacement, which showed it. |
Claude Code 2.1.323; herdr 0.9.3; 2026-11-13 | The message used only the name, because the id was empty. A message with the id of the sender did not run. |
| The own-session closure | codex | not measured | None | The user declined the measure on 2026-11-13. | 2026-11-13 | No Codex test session ran. |
| The binding of a session to its pane | codex | not measured | None | The user declined the measure on 2026-11-13. | 2026-11-13 | No Codex test session ran. |
| The survival of a final report | codex | not measured | None | The user declined the measure on 2026-11-13. | 2026-11-13 | No Codex test session ran. |
| The observer read | codex | not measured | None | The user declined the measure on 2026-11-13. | 2026-11-13 | No Codex test session ran. |
| The receipt | codex | not measured | None | The user declined the measure on 2026-11-13. | 2026-11-13 | No Codex test session ran. |
| The replacement check | codex | not measured | None | The user declined the measure on 2026-11-13. | 2026-11-13 | No Codex test session ran. |
| Missing or unresolved need | Affected role and current section |
|---|---|
| Interactive session start, naming, model, effort, first prompt, and Herdr binding | Operator: Start a session; planner starts: The initial planner and the follow-up planner; role identity terms: docs/sessions.md. |
| Effective permission mode and approval reviewer, policy, and sandbox | Operator: Start a session and A blocked session; task subagent command access: The command rules. |
| Independent messages, exact role address, complete discovery, receipt, and wake | Operator and planner: The initial planner and the follow-up planner; orchestrator and task subagent: The prompt of a task subagent; role names: docs/sessions.md. |
| Scheduled-job create, fire, list, and delete | Orchestrator: Schedule a job when a task subagent starts and Delete the job. |
| Review-subagent limits outside measured native-team scope | Planner and ticket subagent: The ticket subagent and The review loop of a draft; orchestrator and task subagent: The prompt of a task subagent. |
| Pushed background-command completion report | Task subagent: The command rules. |
| Repository skill, installed skill, and persistent notes | Operator, planner, and orchestrator: Session review rounds; task subagent memory limit: docs/dev/limits.md. |
| Interactive user rules | Operator, planner, and orchestrator: The start prompts. |
| Context use and automatic pane and workspace selection | Operator: Start a session and A blocked session. |
| Claude Code: the survival of a final report after the own-session closure | Operator: Stop a session. |
| Claude Code: a replacement check that tells a replacement from the sender | Operator: Stop a session. |
| Codex: the own-session closure | Operator: Stop a session; orchestrator, planner and operator: The close of a milestone. |
| Codex: the survival of a final report after the own-session closure | Operator: Stop a session; orchestrator, planner and operator: The close of a milestone. |
| Codex: the observer read of a closure | Operator: Stop a session; orchestrator, planner and operator: The close of a milestone. |
| Codex: a replacement check that tells a replacement from the sender | Operator: Stop a session; orchestrator, planner and operator: The close of a milestone. |
- Queue acceptance, receipt, turn start, and reply remain unmeasured.
codex queue --helpproves syntax only. Recipient states, target forms, and--resumebehavior were not exercised. - Queue behavior for unavailable targets, ambiguous names, failed identity reads, and resume failures remains unmeasured. Complete discovery, pagination, and limits remain unmeasured.
- Scheduled-job firing remains unmeasured. Create, list, and delete interfaces were not found in the examined ClientRequest schema and native team tool list. This does not prove absence elsewhere.
- The task subagent prompt body was not supplied with the fact-test report.
- A pushed report after a background command ends remains unmeasured. Only polling was observed.
- Persistent notes were not tested because the memory rule bars a write test.
/session-reviewwas not run because the task-subagent limit bars it due to its ability to delete memory notes. The available skill catalog listedsimple-english. The native tool-name inventoryALL_TOOLS.filter(x => /skill/i.test(x.name))returned an empty list on 2026-11-05; its tool version was not exposed. This scoped observation does not prove absent skill support everywhere. The task subagent loadedsimple-englishfrom itsSKILL.mdas instructions. No nativeSkillcall ran. - Herdr interactive Codex start was rejected after one test tab was approved and closed. The test tab was
wT:t5and the test pane waswT:p5. No test-session UUID exists because no test agent started. Correct inherited context, stale inherited context, failed read, no match, and several matches did not run. - Session naming remains unresolved at Herdr start, native rename, same-UUID read-back, exact-name lookup, automatic
Herdr binding, and replacement binding. Expected
planner-<slug>andorchestrator-<slug>names remain unmeasured. No timing stage was measured. - Interactive model, effort, and first-prompt behavior remain unmeasured at launch and, where applicable, at the first
model call. The effort limit includes
max. - Effective interactive permission mode and approval reviewer, policy, and sandbox remain unmeasured. Help text does not establish these results.
- Interactive use of user rules and context-use status remain unmeasured. The candidate command
codex -C /tmp/tasker-664-measures [PROMPT]was not run; the Herdr test-agent start was rejected. - Automatic pane and workspace selection remains unresolved until a measured current UUID joins to exactly one pane and
its current workspace. The inherited
wTcontext is not such a match. - The own-session closure, the binding of a session to its pane and the survival of a final report of Codex are not measured. The observer read, the receipt and the replacement check of Codex are not measured. The user declined the measure on 2026-11-13.
- The survival of a final report and the replacement check of Claude Code have no match. The tab closed before Claude Code wrote the last reply of the sender. A message by name reached the replacement.