Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/gitguffaw/codex-router/rescuegit clone --depth 1 https://github.com/gitguffaw/codex-routerWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00020 | $0.01246 |
| Opus 5 | $0.00010 | $0.00623 |
| Sonnet 5 | $0.00004 | $0.00249 |
| Haiku 4.5 | $0.00002 | $0.00125 |
Grade A, and why
rescue scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
86% identical to rescue — 33 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 57 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Invoke the codex-router:codex-rescue subagent via the Agent tool (subagent_type: "codex-router:codex-rescue"), forwarding the raw user request as the prompt.
codex-router:codex-rescue is a subagent, not a skill — do not call Skill(codex-router:codex-rescue) (no such skill) or Skill(codex-router:rescue) (that re-enters this command and hangs the session). The command runs inline so the Agent tool stays in scope; forked general-purpose subagents do not expose it.
For foreground execution, the final user-visible response must be Codex's output verbatim. For background execution, the launch acknowledgement may be concise; when the subagent completion arrives, surface Codex's output verbatim.
Raw user request: $ARGUMENTS
Execution mode:
- If the request includes both
--backgroundand--wait, stop with an error and do not invoke the subagent. - If the request includes
--background, run thecodex-router:codex-rescuesubagent in the background. - If the request includes
--wait, run thecodex-router:codex-rescuesubagent in the foreground. - If neither flag is present, default to foreground.
--backgroundand--waitcontrol only whether Claude Code runs the subagent in the background or foreground. Do not forward either flag totask, and do not treat them as part of the natural-language task text.- The subagent must always invoke the internal
task --watchmode. That mode launches a detached tracked worker, captures its exact job id, and watches only that authorized job. - A Bash or subagent timeout ends only the watcher. It must never cancel, kill, or mark the detached Codex worker failed while the tracked job remains active.
--modeland--effortare runtime-selection flags. Preserve them for the forwardedtaskcall, but do not treat them as part of the natural-language task text.-c/--config,--enable, and--disableare Codex config controls. Preserve them for the forwardedtaskcall, but do not treat them as part of the natural-language task text.- If the request includes
--resume, do not ask whether to continue. The user already chose. - If the request includes
--fresh, do not ask whether to continue. The user already chose. - Otherwise, before starting Codex, check for a resumable rescue thread from this Claude session by running:
node "${CLAUDE_PLUGIN_ROOT}/scripts/codex-companion.mjs" task-resume-candidate --json
- If that helper reports
available: true, useAskUserQuestionexactly once to ask whether to continue the current Codex thread or start a new one. - The two choices must be:
Continue current Codex threadStart a new Codex thread
- If the user is clearly giving a follow-up instruction such as "continue", "keep going", "resume", "apply the top fix", or "dig deeper", put
Continue current Codex thread (Recommended)first. - Otherwise put
Start a new Codex thread (Recommended)first. - If the user chooses continue, add
--resumebefore routing to the subagent. - If the user chooses a new thread, add
--freshbefore routing to the subagent. - If the helper reports
available: false, do not ask. Route normally.
Operating rules:
- The subagent is a thin forwarder only. It should use one
Bashcall to invokenode "${CLAUDE_PLUGIN_ROOT}/scripts/codex-companion.mjs" task --watch ...and return that command's stdout as-is when the watcher reaches a terminal job state. - Never let the subagent add
--backgroundtotask;--watchowns the detached-worker lifecycle. - Return the Codex companion stdout verbatim to the user when the watched job finishes.
- Do not paraphrase, summarize, rewrite, or add commentary before or after successful output.
- If the Bash watcher expires after printing
Codex rescue started as <job-id>, report that exact id and/codex-router:result <job-id>; state that the active job was not cancelled. Do not start another job. - Do not ask the subagent to inspect files, monitor progress, poll
/codex-router:status, fetch/codex-router:result, call/codex-router:cancel, summarize output, or do follow-up work of its own. - Leave
--effortunset unless the user explicitly asks for a specific reasoning effort. - Leave the model unset unless the user explicitly asks for one. Preserve exact selectors and aliases such as
spark; the runtime resolves them against the live catalog. - Preserve
-c/--config,--enable, and--disablewhen the user explicitly supplies them. - Leave
--resumeand--freshin the forwarded request. The subagent handles that routing when it builds thetaskcommand. - If the helper reports that Codex is missing or unauthenticated, stop and tell the user to run
/codex-router:setup. - If the user did not supply a request, ask what Codex should investigate or fix.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 57 lines · 20 tokens per session scan A 90af07756f6d
rescue is a command published in the GitHub repository gitguffaw/codex-router (2 stars, last pushed 4d ago), licensed Apache-2.0. It adds 20 tokens to every session and 1,246 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. It is 86% identical to rescue, differing in 33 lines, and is treated as a copy.
Other commands, from other repositories
release
Prepare a new release for sandvault. This command updates the changelog, bumps the version, and creates a PR.
verify
Run the full verification pipeline before committing.
codex-review-waive
Waive a disputed Codex review finding so it stops blocking commits.
review
Review the current plan with peer LLMs via inspectrum.
codex-review
Run a Codex code review on commits, branches, or uncommitted changes.
cancel
Cancel an active background Codex job in this repository.