cmux-codex-autoapprove
Run or maintain the cmux approval worker that scans cmux terminal surfaces for approval dialogs, classifies them with `codex exec`, and sends the matching approval key. Use when testing or operating the launchd-based auto-approver, debugging missed prompts, moving the worker, or tuning candidate detection and approval heuristics.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 6
- Forks
- 0
01 前言 Front Matter
- name
- cmux-codex-autoapprove
- description
- Run or maintain the cmux approval worker that scans cmux terminal surfaces for approval dialogs, classifies them with `codex exec`, and sends the matching approval key. Use when testing or operating the launchd-based auto-approver, debugging missed prompts, moving the worker, or tuning candidate detection and approval heuristics.
- user-invocable
- true
02 资源文件 1
03 SKILL.md 正文
⚠️ Submit Discipline (MANDATORY — read this before every cmux steer)
cmux send does NOT press Enter. This is the #1 recurring cmux failure mode
(verified 2026-07-16: user explicitly flagged "you always forget to send" after the
fable iOS pivot bootstrap). The 4-step ritual below is a hard contract for every
send to a cmux surface. Skip ANY step and the message sits in the input buffer
without ever reaching the agent.
The 4-step ritual
# STEP 1 — Type the text. OK response only proves socket acceptance, NOT submission.
cmux send --workspace workspace:N --surface surface:M "your message"
# STEP 2 — Press Enter. send does NOT auto-press Enter.
cmux send-key --workspace workspace:N --surface surface:M enter
# STEP 3 — Wait 5-15 seconds for the agent to start processing.
sleep 8
# STEP 4 — Verify with churning label (THE ONLY definitive proof).
cmux capture-pane --workspace workspace:N --surface surface:M --lines 25
# Look for one of:
# - "Working (Xs • esc to interrupt)"
# - "Forming… (Xs · thinking)"
# - "Precipitating… (Xs · ↓ tokens)"
# - "Brewed / Churned / Cooked for Xm"
# If you see ANY active churning label → SUBMITTED.
# If the text is still sitting at the ❯ prompt → NOT submitted, repeat step 2.
# If "Stopped" / "Done" / nothing → no churn, investigate.
⚠️ Output Contract — typed text + terminal response (MANDATORY)
Every reply that reports a cmux send action MUST include, in the same reply:
- The exact text that was typed — verbatim copy of the string passed to
cmux send. - The cmux terminal response — verbatim transcript of what
cmux capture-pane/cmux read-screenreturned AFTER thecmux send-key entersettle window (typically 5-15s). Specifically, the agent's first action after absorption. - Submission status — explicit verdict: "submitted (churning label X)", "not submitted (text still at ❯ prompt)", or "blocked (no churn, retried N times)".
Treat as not working until we see a response. A reply that does NOT include both the typed text AND a terminal response is invalid evidence that the steer landed. The operator cannot distinguish a successful send from a failed send that left text in the input buffer.
Canonical contract + echo-back template: ~/.hermes/skills/cmux/references/output-contract-mandatory.md.
⚠️ LLM-Provenance Caveat (MANDATORY footer)
Every reply that quotes cmux output, terminal text, or agent actions produced by another LLM (the worker agent OR the assistant's own synthesis of agent output) MUST end with this verbatim footer:
This was generated from another LLM and not the actual user, so feel free to push back if you disagree and we can discuss.
Full caveat rules + scope: ~/.hermes/skills/cmux/references/output-contract-mandatory.md § "LLM-Provenance Caveat".
Echo-back proof (MANDATORY)
Every cmux steering action MUST be followed by an echo-back proof in the same turn or the immediate next turn to your operator (Slack thread, terminal reply, or whichever channel triggered the steer):
◀ sent to surface:55 (LEFT/claudec) at <HH:MM:SS PT> — 4-step ritual complete; churning label "Forming… 9s · ↓ 4.9k tokens" confirmed via capture-pane.
Banned (these are the failure modes the user keeps flagging):
- "I sent the message" (no Enter proof)
- "The agent should have received it" (no churning label)
cmux sendwith no follow-upcmux send-key enter- Sending to a surface that hasn't been focused (the global focus may be on a
different workspace; use the raw RPC
surface.focusif needed)
Worktree-pointer strategy for long briefs
For task briefs >200 chars (e.g. orchestrating iOS app pivot, multi-PR review),
do NOT paste the full text into the input. Write the brief to a file in the
agent's cwd (e.g. .cmux-<task>-brief.md) and send a 1-2 line pointer. This
avoids the autocompleter contamination pitfall where shell-style tokens inside
long text trigger tab completion mid-stream.
Canonical reference
Full recipe + edge cases + the 2026-06-25 worked example live at:
~/.hermes/skills/cmux/references/send-submit-proof-2026-06-25.md
This rule was added 2026-07-16 after the fable iOS pivot bootstrap surfaced "you always forget to send" / "make sure you press submit and the work starts on the cmux input" (Slack ts 1784185650.528089). Apply it uniformly to every cmux-touching skill.
cmux Codex Autoapprove
Canonical files:
- Skill root:
$HOME/.claude/skills/cmux-codex-autoapprove - Worker script:
$HOME/.claude/skills/cmux-codex-autoapprove/scripts/cmux_codex_approve_launchd.py - LaunchAgent:
$HOME/Library/LaunchAgents/com.$USER.cmux-codex-approve.plist - Logs:
$HOME/.claude/supervisor/cmux-codex-launchd.log - State:
$HOME/.claude/supervisor/cmux-codex-launchd-state.json
Compatibility paths:
- Wrapper path used by older flows:
$HOME/.claude/bin/cmux_codex_approve_launchd.py - Codex skill symlink:
$HOME/.codex/skills/cmux-codex-autoapprove
Purpose
Use this skill for a custom cmux auto-approver that:
- enumerates terminal surfaces with
cmux --json tree --all - reads visible terminal content with
cmux read-screen - filters for approval-like prompts near the bottom of the live screen
- asks
codex execfor a one-token decision:ENTER,1,y,SKIP, orDENY - sends the chosen key back with
cmux sendorcmux send-key
This is the non-snap-agent-supervisor path.
Normal Workflow
- Verify the target surface with:
cmux --json tree --all
cmux read-screen --workspace <workspace> --surface <surface> --lines 24
- If you need a one-shot run, execute:
/opt/homebrew/bin/python3 $HOME/.claude/skills/cmux-codex-autoapprove/scripts/cmux_codex_approve_launchd.py
- For the scheduled agent, use:
launchctl kickstart -k gui/501/com.$USER.cmux-codex-approve
launchctl print gui/501/com.$USER.cmux-codex-approve
Behavior Notes
- The worker intentionally focuses on the bottom active region of the screen so stale scrollback does not retrigger approvals forever.
- Approved prompt digests are cleared once the surface returns to a normal shell or idle prompt.
- Idle runs are cheap.
codex execis only called when the screen looks like a real approval dialog.
When To Edit
Edit the worker script when:
- a real approval dialog is missed
- a non-approval surface is being auto-approved
launchdcan detect candidates but hangs or times out during classification- prompt wording changes and the regexes need to expand
Check these first when debugging:
$HOME/.claude/supervisor/cmux-codex-launchd.log$HOME/.claude/supervisor/cmux-codex-launchd.stderr.log$HOME/.claude/supervisor/cmux-codex-launchd-state.json
04 同仓库更多 Skills
instinct
Use when the user invokes /instinct or /in, or asks to "message Instinct", "ask Instinct", "tell Instinct", "check Instinct", or read replies from the configured peer assistant. iMessage first, WhatsApp Web as fallback.
hr
Compatibility alias for history-resume; produce the same fresh-state, provenance-aware resume briefing.
history-resume
Resume briefing for the current repository branch or worktree using fresh state and admitted history sources.
grok
Alias for the canonical grokbot browser conversation workflow; /grok talks to the Grok bot the same way /dot talks to Dot.
codexa-bench
Compare `codexa` and normal `codex` on a fair split of comparable work by default; use `--strict` for duplicate runs of the exact same task.
frontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.