Skip to content

kew run

Pick the next ready issue and dispatch Claude Code to implement it.

Usage: kew run [OPTIONS]

Options:
  --loop          Continuous mode until queue empty
  --dry-run       Preview issue selection without running
  --show-prompt   Print the generated prompt and exit
  --issue INT     Force a specific issue number
  --workers INT   Number of parallel workers (overrides config)
  --force         Bypass budget checks
  --model TEXT    Override model for this dispatch
  --approve       Approve this dispatch past the approval gate (requires --issue)

kew dry-run demo

Examples:

# Single dispatch (pick next ready issue)
kew run

# Preview what would be picked
kew run --dry-run

# Continuous mode (processes queue, exits after 3 empty checks)
kew run --loop

# Force a specific issue
kew run --issue 42

# Inspect the prompt that would be sent to Claude
kew run --dry-run --show-prompt --issue 42

# Parallel dispatch with 3 workers
kew run --loop --workers 3

# Release an issue held by the approval gate
kew run --issue 42 --approve

Note: run --loop is continuous dispatch (drains the ready queue). It is unrelated to kew dispatch <issue> --loop, which supervises a single issue as a first-class, verified loop. See kew dispatch.

Exit status

Code Meaning
0 An issue was dispatched (or the loop drained the queue cleanly).
1 The dispatch itself failed.
2 The ready queue was empty — nothing to dispatch.
3 A GitHub query failed (e.g. an expired token or network outage). The queue state is unknown — this is deliberately distinct from 2 so an overnight --loop that dies on a gh failure never looks like a clean, empty-queue drain.

--approve

Approve this dispatch past the approval gate (requires --issue, not valid with --loop). Use it to release an issue held with the needs-approval label. Logged as approval_granted. Without [approval] configured the flag is an accepted no-op.