---
name: codex-cancel
description: "Cancel an active background Codex job. Use when asked \"codex cancel\", \"코덱스 취소\", \"작업 중단\", or wants to stop a running Codex task."
argument-hint: "[job-id]"
allowed-tools: ["Bash", "AskUserQuestion"]
---

# Codex Job Cancel

Pass-through wrapper around the Official Codex companion's `cancel` subcommand. Exists so users who disabled the Official plugin's slash commands can still cancel jobs via codex-advisor.

## Phase 1: Confirm target (if ambiguous)

If the user did not provide a `job-id`, the companion cancels the most recent active job — which may not be what they intended. Use `AskUserQuestion` when:

- Multiple active jobs exist (check via `node "$CODEX_COMPANION" status` first, optional).
- The user's phrasing suggests a specific job ("cancel the rescue", "stop the research") but no ID.

Skip the prompt when the intent is obvious (single active job, or they pass an explicit ID).

## Phase 2: Invoke companion cancel

```bash
set -o pipefail
CODEX_COMPANION=$("${CLAUDE_PLUGIN_ROOT}/scripts/resolve-companion.sh") \
  || { echo "Official Codex plugin not found — run /codex-setup" >&2; exit 1; }

node "$CODEX_COMPANION" cancel $ARGUMENTS
```

Relay the companion's output verbatim. It typically reports `cancelled` or `no-op (not running)`.

## Gotchas

- **Cancellation is not instant.** The companion signals the Codex worker; in-flight tool calls may complete before the worker exits. Don't promise "stopped immediately".
- **Cancelling a rescue job does NOT revert the diff.** If Codex already wrote files under `--write`, those changes stay on disk. Remind the user to `git diff` / `git restore` if needed.
- **No job-id == most recent active.** Only one job at a time is the common case, so this usually does what the user wants — but with multiple active jobs it can surprise. When in doubt, run `status` first and cancel by explicit ID.
