Aude Code

AUDE(1) General Commands Manual AUDE(1)

aude — a coding agent over the claude or codex CLI

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

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 is one conversation, with a name and a directory. Its is the aude process that runs it. Its on disk keeps its facts and its transcript after the host exits, and the next turn starts a new host. A is the work for one line of input. A is a session that aude start made, in a git worktree of its own. A 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.

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).

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.

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.

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 --on subagents
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.

name
claude or codex. aude, print and start require it, and the other commands read it from the record.
name
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.
level
low, medium, high, xhigh or max.
name
An agent of the project, or default, the agent of aude; see FILES.
id
Continue the conversation that has this id.
name, --bind network
The name of the session, and where its host listens; see aude-rc(7).
duration
For start and send, the budget of the turn: the longest time it can run, as ‘<n>s’, ‘<n>m’ or ‘<n>h’.
duration
The longest time wait blocks, in the same form.
name ...
The subagents that this subagent builds on; see start.
, --help, --version
Print a summary or the version, and exit.

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.

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).

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.

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.

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.

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.

aude sessions prints the listing of each session of the current repository, and with --all of each session on this machine.

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.

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.

Log in; see AUTHENTICATION.
Start a new conversation, and print the resume line of the old one when it ran a turn.
[name]
Show the model and the identifiers, or change the model.
[level]
Show the effort, or change it.
[name]
Show the agent and the names, or change the agent: the harness restarts and keeps the conversation.
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).

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’.

Any value removes colour and text styles.
aude finds the harness here.
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.

~/.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
adds ‘/.aude/’ when git does not ignore it.
.claude/settings.json, .claude/settings.local.json, .codex/config.toml
Project settings. aude does 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. aude reads only the name and the instructions of an agent file, <name>.md or <name>.toml, and the instructions replace the profile of aude in the system prompt.
wiki/README.md
The project wiki; see aude-wiki(7).

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

Send one turn and print the answer:

$ aude print --harness claude 'hi' | jq -r 'select(.kind=="assistant").text'

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.

git-merge(1), git-worktree(1), aude-rc(7), aude-team(7), aude-terminal(7), aude-wiki(7), aude-wire(7)

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