Skip to content

dev

Maintainer override — suspend orchestration to edit codeArbiter itself. Env-gated (CODEARBITER_DEV=1), entry/exit logged to overrides.log.

Suspends codeArbiter’s orchestration so you can edit codeArbiter itself — skill, agent, command, and hook bodies, ORCHESTRATOR.md, settings. It is not for project work; /ca:override covers a single-gate bypass on ordinary project code, and this command declines that use.

Entry is gated behind the CODEARBITER_DEV=1 environment variable specifically so it’s a deliberate maintainer posture, never a one-line accidental bypass. Once entered, an append-only log line records who and when in .codearbiter/overrides.log, a gitignored marker file turns the statusline alarm-red so the mode is unmistakable, and the session becomes a plain, direct coding assistant — no routing, no skills, no gates, no [CONFIRM-NN] surfacing — until /ca:arbiter or a new session.

/ca:dev [note]

An optional free-text note is recorded alongside the entry log line.

$ export CODEARBITER_DEV=1
> /ca:dev "fixing pre-bash H-03 regex"
[2026-07-02T14:02:11Z] | BY: dev@example.com | DEV: enter | NOTE: fixing pre-bash H-03 regex
dev-active marker written; statusline is now red.
Orchestration suspended — plain coding assistant mode until /ca:arbiter.

A single gate bypass on ordinary project work is /ca:override "reason"’s job, not this one’s; a plain question is /ca:btw’s.

GateWhenEffect
env gateCODEARBITER_DEV is not set to 1refuses in one line and orchestration stays in force — dev mode is never a casual bypass
append-only auditentering dev modean entry line is appended to overrides.log before orchestration is suspended, and the statusline turns alarm-red for the duration
Source — plugins/ca/commands/dev.md (v2.9.1)
---
description: Maintainer override — suspend orchestration to edit codeArbiter itself. Env-gated (CODEARBITER_DEV=1), entry/exit logged to overrides.log.
argument-hint: "[note]"
---
# /ca:dev — maintainer override
Suspends orchestration for working ON codeArbiter — skill, agent, command, and hook bodies,
`ORCHESTRATOR.md`, settings. Not for project work; for that, use the normal commands or
`/ca:override`.
## Flow
1. **Env gate** — check the `CODEARBITER_DEV` environment variable. Not set to `1` → refuse in one
line ("dev mode requires CODEARBITER_DEV=1") and remain in orchestration. This keeps the mode a
deliberate maintainer posture, not a casual bypass.
2. **Log entry** — detect identity from `git config user.email`; append to
`${CLAUDE_PROJECT_DIR}/.codearbiter/overrides.log` (append-only, `>>`):
```
[ISO-8601 timestamp] | BY: <email> | DEV: enter | NOTE: <note or —>
```
3. **Marker** — drop `${CLAUDE_PROJECT_DIR}/.codearbiter/.markers/dev-active` (gitignored UI flag);
the statusline turns alarm-red so dev mode is unmistakable.
4. **Mode** — plain, direct coding assistant: no routing, no skills, no gates, no `[CONFIRM-NN]`
surfacing, no redirect. Persists until `/ca:arbiter` or a new session.
Note (#271): if another session starts in this repo while this marker is live, SessionStart no longer
unconditionally clears it out from under you — it is session-scoped now, so a concurrently-running dev
session's marker survives a different session's startup. See `/ca:arbiter` for the exit-path detail.
## Hard gate
MUST refuse without `CODEARBITER_DEV=1`. MUST write the `DEV: enter` log line before suspending
orchestration. Even in dev mode, `overrides.log` is never rewritten — the append-only rule has no
dev exception.
## When NOT to use
- Bypassing a single gate on project work → `/ca:override "reason"`.
- Asking a question → `/ca:btw`.

View in repo