| AUDE(1) | General Commands Manual | AUDE(1) |
NAME
aude — a coding
agent over the claude or codex CLI
SYNOPSIS
aude |
--harness name
[options] |
aude |
print --harness
name [options]
text |
aude |
start name
--harness name
--budget duration
[--on name ...]
[options] |
aude |
send target
--budget duration |
aude |
interrupt target |
aude |
wait [target ...]
--limit duration |
aude |
attach target |
url [--since
sequence] [--json] |
aude |
sessions [--all]
[--json] |
aude |
remove target ... |
aude |
pair | devices |
revoke, see
aude-rc(7) |
aude |
-h | --help |
--version |
DESCRIPTION
aude runs a harness, claude or codex, as a
child process, and replaces its instructions. The model has the tools of the
harness and no others: Read, Bash and Skill on claude, and exec, apply_patch
and view_image on codex. No subagent tool; delegation is
aude-team(7).
aude never asks for permission; see
CAVEATS.
A
session is one
conversation, with a name and a directory. Its
host is
the aude process that runs it. Its
record
on disk keeps its facts and its transcript after the host exits, and the
next turn starts a new host. A
turn is
the work for one line of input. A
subagent
is a session that aude start
made, in a git worktree of its own. A
target
is the name or the id of a session, or a unique prefix of one, in the
current git repository, or in the current directory outside a
repository.
INPUT AND OUTPUT
With a terminal on standard input and standard output,
aude is the line editor of
aude-terminal(7).
With no terminal, each line of standard input is one turn, and
aude sends the next line when the turn is done. For
a long task, write it to a file and name the file in the line. The line
‘!interrupt’ interrupts the running
turn. Standard output is the transcript, with no colour, and standard error
gets the diagnostics. aude exits when the input has
ended and no turn runs or waits; the end of the input does not interrupt a
turn. When a turn ran, the last line on standard output is the resume line
of DIAGNOSTICS.
At start, the host prints its URL for a paired device; see aude-rc(7).
The JSON entry
print and attach
--json write one JSON object per line, one for each
transcript entry. Each entry has
‘sequence’, a number that counts every
fact of the session, so it skips;
‘kind’; and
‘timestamp’, an RFC 3339 time. A field
that does not apply is absent.
| kind | fields | is |
| user | text, origin | a line the session read |
| assistant | text | the model's answer |
| tool_use | tool, tool_use_id, summary, input_preview | a tool call |
| tool_result | tool_use_id, summary, is_ok | the result of a call |
| notice | text | a line from the session |
| error | text | a failure, which makes exit 1 |
| cleared | text | the end of a conversation by /clear |
‘is_ok’ is false when the
tool failed.
The listing
start, send,
interrupt, wait,
sessions and remove print
one listing per session:
<name> <state>
exit=<n> quiet=<n>s queued=<n> commits=<n>
dirty=<n> sequence=<n> <directory>The state is the work's state:
- waiting
- a subagent that waits for its
--onsubagents - working
- a turn runs or is in the queue
- done
- no turn runs or waits, and the last turn had exit 0
- failed
- no turn runs or waits, and the last turn or the host failed;
‘
exit’ tells why
‘quiet’ is the seconds since
the last transcript entry. ‘queued’
counts the turns in the queue.
‘commits’ counts the commits of the
subagent, and ‘dirty’ its uncommitted
paths, read from git. ‘sequence’ is
the last fact. A field that does not apply is
‘-’.
--json gives the record and
‘changes’:
‘work.error’,
‘activity.last_assistant_text’, the
last answer, and
‘facts.settings.conversation’, the id
for --resume.
OPTIONS
--harnessname- claude or codex.
aude,printandstartrequire it, and the other commands read it from the record. --modelname- A model of the harness: its name or identifier, or the newest of a family: opus, sonnet, haiku or fable on claude; sol, astra, luna or terra on codex.
--effortlevel- low, medium, high, xhigh or max.
--agentname- An agent of the project, or default, the agent of
aude; see FILES. --resumeid- Continue the conversation that has this id.
--namename,--bindnetwork- The name of the session, and where its host listens; see aude-rc(7).
--budgetduration- For
startandsend, the budget of the turn: the longest time it can run, as ‘<n>s’, ‘<n>m’ or ‘<n>h’. --limitduration- The longest time
waitblocks, in the same form. --onname ...- The subagents that this subagent builds on; see start.
-h,--help,--version- Print a summary or the version, and exit.
COMMANDS
aude print sends
the text as one turn and exits when the turn is done. It keeps no record and
reads no standard input. Standard output is JSON entries; standard error
gets the diagnostics, and last, the resume line.
start
aude start
name makes a subagent and gives it its first turn:
standard input, with --budget. The worktree is
.aude/worktrees/<name> in the repository, on
the branch name, which start
uses when it exists. The directory must not exist, and the name must not
change when aude cleans it; see
aude-rc(7).
start returns the listing when the host has the
turn.
With --on, the subagent waits for each
named subagent, and its host merges their branches in the given order; see
aude-team(7).
send
aude send
target gives one turn to a session and returns the
listing. Standard input is the turn: text, a skill or a slash command. When
the session has a host, the turn goes into its queue; else
send starts a host that continues the
conversation.
interrupt
aude interrupt
target interrupts the running turn and returns the
listing. The turn gets exit 9 and the error
‘interrupted’, the session is failed,
and the next turn in the queue runs. With no running turn,
interrupt does nothing.
wait
aude wait blocks
until no named session is waiting or working, or until
--limit ends; with no target, it waits for each
subagent in scope. Exit 0 when all are done, 1 when one failed, and 9 when
--limit ended first.
attach
With no terminal, aude
attach target prints the
entries of the running turn, or else of the last turn, and exits; the
session needs no host. --since
sequence prints the entries after
sequence, and --since
0 prints all. --json prints
JSON entries.
With a terminal, attach opens the line
editor of aude-terminal(7)
on the session, which must have a host.
sessions
aude sessions
prints the listing of each session of the current repository, and with
--all of each session on this machine.
remove
aude remove
target ... removes the worktree, the branch and the
record of a subagent, and prints its listing. It removes nothing, and exits
64, when the session is not a subagent, when the subagent is waiting or
working, when the worktree has uncommitted or untracked files, or when the
branch is not merged.
SLASH COMMANDS
aude accepts these commands and no others.
A command with a name or a level waits in the queue for its turn, and
aude checks the name or the level then.
/login- Log in; see AUTHENTICATION.
/clear- Start a new conversation, and print the resume line of the old one when it ran a turn.
/model[name]- Show the model and the identifiers, or change the model.
/effort[level]- Show the effort, or change it.
/agent[name]- Show the agent and the names, or change the agent: the harness restarts and keeps the conversation.
/<skill>- Run a project skill. The model can also run a skill.
A command answers one line;
‘<what>’ is model, effort or
agent:
- ‘
<what> <value> · available: <values>’ - ‘
<what> set to <value>’ - ‘
unknown <what> '<value>' — available: <values>’ - ‘
model change failed — <detail>’ - ‘
effort change failed — no response’ - ‘
effort is not supported by <model>’ - ‘
clear failed — context is unchanged’ - ‘
unknown command /<name> — aude accepts /login /clear /model /effort /agent and /<skill>’
/attach, /switch
and /detach are commands of the line editor; see
aude-terminal(7).
AUTHENTICATION
aude works only with the subscription
login of the harness: Claude on claude, and ChatGPT on codex. An API key or
a token does not work, and aude never reads the
credential.
When the login is not correct, aude prints
one line, such as ‘not logged in to Claude —
type /login’. With a terminal, /login
runs ‘claude auth login --claudeai’ or
‘codex login’.
ENVIRONMENT
NO_COLOR- Any value removes colour and text styles.
PATHaudefinds the harness here.TERM- Empty or ‘
dumb’ removes colour and text styles.
The child gets no name that starts with
ANTHROPIC_, CLAUDE_,
CCR_, OPENAI_ or
CODEX_, and no CLAUDECODE or
AWS_BEARER_TOKEN_BEDROCK, except where its login is:
CLAUDE_CONFIG_DIR and
CLAUDE_SECURESTORAGE_CONFIG_DIR on claude, and
CODEX_HOME on codex.
FILES
- ~/.aude/rc/<id>/events.jsonl
- Every fact of a record, one per line, as aude-wire(7) ENTRIES.
- ~/.aude/rc/<id>/host.lock
- Held by the host while it lives.
- ~/.aude/rc/<id>/checkpoint.json
- ‘
record’, the record through the first ‘length’ bytes of the events file. - ~/.aude/run/<id>/prompt.md
- The child's system prompt, while it runs.
- .aude/worktrees/<name>
- A subagent's worktree.
- .git/info/exclude
startadds ‘/.aude/’ when git does not ignore it.- .claude/settings.json, .claude/settings.local.json, .codex/config.toml
- Project settings.
audedoes not start when they set hooks, an API key, MCP servers or a base URL; see DIAGNOSTICS. - CLAUDE.md, AGENTS.md
- Project instructions, which the harness reads.
- .claude/skills, .claude/agents; .agents/skills, .codex/skills, .codex/agents
- The project's skills and agents, on claude and on codex.
audereads only the name and the instructions of an agent file, <name>.md or <name>.toml, and the instructions replace the profile ofaudein the system prompt. - wiki/README.md
- The project wiki; see aude-wiki(7).
EXIT STATUS
The aude utility exits 0 on
success, and >0 if an error occurs. A closed standard output exits
0. The ‘exit’ field of a listing uses
the same codes.
| 1 | an error; a session or an --on subagent
failed |
| 2 | refused settings |
| 3 | no login, with no terminal |
| 4 | not a subscription, with no terminal |
| 5 | the harness or the host did not start, or stopped |
| 6 | ~/.aude/rc cannot be read |
| 7 | the instructions file cannot be written |
| 8 | no session or no host; a failed connection; a host that cannot listen,
see aude-rc(7); a removed
--on subagent |
| 9 | the budget ended, interrupt interrupted the
turn, or --limit ended |
| 64 | incorrect use, a refused remove, or a merge
conflict |
| 70 | an internal failure |
EXAMPLES
Send one turn and print the answer:
$ aude print --harness claude 'hi' |
jq -r 'select(.kind=="assistant").text'DIAGNOSTICS
Each line below is complete, and EXIT STATUS gives its code:
- ‘
no input — one line on standard input is one turn’ - ‘
empty turn’ - ‘
no session matches '<target>' — try: aude sessions’ - ‘
'<target>' matches <n> sessions:’ - ‘
'<name>' would be folded to '<folded>' — use that name’ - ‘
'<name>' exists — send to it, or remove it’ - ‘
.aude/worktrees/<name> exists and is not a subagent’ - ‘
<name>: not a subagent’ - ‘
unknown agent '<name>' — available: <names>’ - ‘
<name>: interrupt it first’ - ‘
'<name>' has no host — aude send <name> continues it’ - ‘
an aude-rc:// target needs a terminal’ - ‘
HOME is unset and the user has no home directory’
These need an explanation:
- resume with: aude --harness <name> --resume <id>
- The line that continues a conversation: at the end, this session's; at start, the one of the record that this session replaced.
- aude cannot start: <detail> — check <file> ...
- A project or harness settings file sets hooks, an API key, MCP servers or a base URL. Remove it.
- a project skill named '<name>' collides with a reserved command name and is not routable
- Rename the skill directory.
- the harness offers the model skills the project does not hold: <names>
- You cannot prevent this.
- error: <binary> exited <code> mid-turn — reconnecting to session <id>
- The child stopped and the turn failed: give it again.
SEE ALSO
git-merge(1), git-worktree(1), aude-rc(7), aude-team(7), aude-terminal(7), aude-wiki(7), aude-wire(7)
CAVEATS
The model can run each shell command that you can run, and nothing
asks first: run aude in a sandbox.
On claude, the CLI gives the model the email address of the login,
and aude cannot remove it.
Managed settings of the machine override the settings of
aude, and a skill can set hooks, which
aude does not refuse.
The events file of a record grows until
remove.
| October 21, 2026 | aude |