Commands and keys
Every key, slash command and terminal command in CodeAF, grouped by the screen you are on.
You do not need to memorize these. Ask CodeAF in plain words, such as "what keys open the wall?", and it looks the answer up in its own manual.
Every row here was checked against the CodeAF dev build. Keys are drawn as keycaps: press them. Commands are drawn as code: type them, then press Enter. If a row is missing in your CodeAF, you may be on the stable build; see Troubleshooting.
Sections
The 15 essentials
The keys and commands most days need.
| Keys | What it does |
|---|---|
| ? | Show every key and command (type it in an empty box) |
| / | Open the command list; keep typing to narrow it |
/task <brief> | Hand off work that runs on its own in a copy of your folder |
| Alt+V | The wall: every open conversation as live tiles |
| Alt+2 | The teams page: teams, managers, what waits on you |
| Alt+M | In a team, jump to its manager |
| Alt+K | Switch to another conversation |
| Ctrl+T | Start a new chat in a new tab |
| Space Space | Go home: every project and conversation on this machine |
| Esc | Stop the running answer |
| Enter while it answers | Stop the answer and steer your new words in |
| Esc Esc | Take back your last message |
/crew | See and change the crew (worker, planner, checker) and the per-task limit |
| Alt+A | Walk approvals: asks, guardian, YOLO |
/standing <words> | Turn a sentence into a standing order that keeps running |
Slash commands
Typed in the message box, grouped by what they touch.
Type these in the message box. / opens the list, and a space closes it. Words in angle brackets are yours to fill in.
Getting around
| Command | What it does |
|---|---|
/help | The full list of keys and commands, same as ? |
/home | Open home |
/wall | Every open conversation as live tiles |
/teams | The teams page |
/settings | Open settings (also Ctrl+,) |
/search | Search everything said on this machine |
/manual <question> | Answer from CodeAF's own manual, naming the page it used |
/status | Every fact the status line knows; /status --json gives them as JSON |
/update | Install the newest CodeAF for your channel and restart on it |
/update <channel or tag> | Install a channel (stable, rc, dev, staging) or one exact tag |
/quit | Close this conversation's tab; CodeAF and the work keep running |
/debug | Keep the full record of this conversation and say where it is |
A conversation
| Command | What it does |
|---|---|
/new | Start another conversation in this project |
/resume | Open an earlier conversation |
/project <path> | On home: the folder your next conversation opens in |
/folder <path> | Give this conversation a folder to work in |
/workspace <path> | Anchor a conversation with no project to a project |
/model | Open the model picker |
/model <slug> | Switch this conversation's model |
/effort | Pick how hard the model thinks; /effort <rung> sets it outright |
/attach <path> | Put a file on the tray; bare /attach opens the file browser |
/rewind | Go back to any earlier point from a list |
/compact | Summarise the conversation now |
/copy | Copy mode (same as Ctrl+B) |
/select | Hand the mouse to the terminal to drag-select |
/export <path> | Write the conversation to a Markdown file |
/files | What was made for you in this conversation |
/permissions | What runs without asking you |
/cost | What this conversation has spent |
Tasks
| Command | What it does |
|---|---|
/task <brief> | Start work you can walk away from; it prints the crew and the estimate |
/task --cheap <brief> | The same, on the cheapest crew allowed |
/task --best <brief> | The same, on the strongest crew |
/task solo <brief> | One worker, no sizing |
/task | The task page. From the / list, press Enter twice |
/redo stronger | Run the last task again on a stronger crew |
/history | Every task this machine ran (also Ctrl+.) |
/stop | Stop the task that is open (it asks first) |
/land | Put changes waiting for another folder into it; /land <folder> names one |
Teams, specialists and programs
| Command | What it does |
|---|---|
/teams | The teams page: tree, inbox, the manager's conversation |
/senior-dev <brief> | Hand a large, well-specified code change to senior-dev |
/subharness | Programs you can run here; Enter opens the intake card |
/harness | Saved shapes of work |
Crew and spend
| Command | What it does |
|---|---|
/crew | The crew panel: three seats, allowed models, providers, limits |
/crew pin <seat> <model> | Pin the worker, planner or checker to one model |
/crew unpin <seat> | Put a seat back on auto; /crew unpin all for every seat |
/crew models <rule> | Which models a seat may use: all, open, or model ids |
/crew cap <dollars> | The most the crews may spend in a day; /crew cap off removes it |
/crew cap task <dollars> | The most one task may spend ($5 unless you set it) |
/budget | Every spending limit on one tab |
/budget <amount> | Set the day's limit |
/budget conversation <amount> | Set this conversation's limit; none removes a limit |
/spend | What this machine cost, by day (also Alt+5) |
/cache | Build cache size; /cache clean deletes it after asking |
Standing orders
| Command | What it does |
|---|---|
/standing <words> | Make those words a standing order; a card asks you to confirm |
/standing | What stands; select one and press →, then P pause or S stop |
/autonomy | How questions are handled while you are away, by kind |
/autonomy <kind> <rule> | Change one kind for this project: ask, recommend <time> or decide |
Keys by screen
What each key does on the screen you are on.
Everywhere
| Keys | What it does |
|---|---|
| Alt+1 … Alt+9 | Go to a place: home, teams, chats, sessions, spend, settings, standing, memory, search |
| Alt+. | On a place: number the tabs and list that place's keys |
| Tab | On a place: the next place. Over an empty box: back to the last conversation |
| Space Space | Over an empty box: go home |
| Ctrl+, | Open settings |
| Ctrl+C | Quit everything; while an answer runs it only interrupts |
Home
| Keys | What it does |
|---|---|
| Type | Filter the list, or start something new |
| ↑ ↓ | Move between rows |
| Enter | Open the row |
| → | Show what the row can do |
Chat: typing
| Keys | What it does |
|---|---|
| Enter | Send |
| Alt+Enter | New line without sending (also Shift+Enter or Ctrl+J) |
@ then a path | Mention a file; a picture attaches |
| ↑ in an empty box | Walk back through cleared drafts, then what you sent |
| Ctrl+U | Delete the current line |
| Alt+E | Walk thinking: auto, low, medium, high, xhigh, max |
| Alt+A | Walk approvals: asks, guardian, YOLO |
Chat: while it answers
| Keys | What it does |
|---|---|
| Esc | Stop the answer |
| Enter with words typed | Stop the reply and steer your words in |
| Ctrl+Q | Queue your message to run after this turn |
| Ctrl+E | Open the running turn's steps |
| Ctrl+O | Expand this turn's tool calls |
Chat: reading and tabs
| Keys | What it does |
|---|---|
| Esc Esc | Take back your last message; Enter confirms |
| Ctrl+L | Back to the latest |
| PgUp PgDn | Scroll a page |
| Ctrl+B | Copy mode: arrows move, V marks, Y copies |
| Ctrl+S | Hand the mouse to the terminal to select text |
| Ctrl+T | New chat; Esc comes back, nothing is made until you send |
| Ctrl+W | Close this tab; the conversation keeps running |
| Alt+K | Conversation switcher: digits pick, Enter opens |
| Alt+L | Show or hide the right column (Tasks, and Traffic in a team) |
| Ctrl+G | Close or bring back the right column |
The wall
| Keys | What it does |
|---|---|
| Alt+V | Open the wall from anywhere (or /wall) |
| ↑ ↓ ← → | Move between tiles |
| Enter | Open or answer the focused conversation |
| Space | Select the focused tile |
| S | Make a new team from the selected tiles |
| N | Next conversation waiting on you |
| O | Suggest teams |
| G / Shift+G | First / last tile |
| - + 0 | Fewer, more, or automatic columns |
| ? | The wall's own key card |
| Esc | Back |
The teams page
| Keys | What it does |
|---|---|
| Alt+2 | Open the teams page from anywhere (or /teams) |
| Alt+↑ | Move from the manager's box onto the page's rail and buttons |
| ↑ ↓ then Enter | On the rail: choose a team |
| Shift+M | Start a manager for the chosen team |
| S | The chosen team's card and settings, including its cap |
| C | Close the chosen team (Undo is offered) |
| N | New team inside the chosen team |
| W | Open the wall on the chosen team |
| Esc | Put the keys back in the manager's box. While the manager is answering, it stops the answer |
| Alt+M | From any member's chat: go to the team's manager |
With a manager in front, letters type into the manager's box until Alt+↑ puts the keys on the rail.
A task room
| Keys | What it does |
|---|---|
| Alt+T | Give the keyboard to the task list; Enter opens a task, X stops it |
| Ctrl+. | Every task this machine ran |
| Type, then Enter | A note that reaches the worker at its next step |
| X in an empty box | Stop card: 1 stop it, 2 keep going, then Enter |
| ← ← | Leave the room, back to the live edge |
Terminal commands
Run in a shell: start, script, the engine and upkeep.
Run these in a shell, not in the chat.
Start and open
| Command | What it does |
|---|---|
codeaf | Open the conversation this folder was last having, or home |
codeaf chat | Open a chat; flags such as --model <slug>, --yolo, --max-cost <dollars> go after chat |
codeaf resume | Pick an earlier conversation |
codeaf chat --host <host>:<path> | The screen here, the conversation and its work on another machine over ssh |
codeaf chat --at <name> | Reach a paired machine with a pairing code (see codeaf serve, codeaf devices) |
Run work from a script
| Command | What it does |
|---|---|
codeaf do "<task>" | Do one task with no screen and exit; --json for a machine-readable result |
codeaf do --cheap, --best, --slots <n> | The crew and the width for one run |
codeaf do --pin <seat>=<model> | Pin one seat for one run |
codeaf exec "<prompt>" | One worker, one pass, no plan |
codeaf plan new, show, revise, run | A plan written to a file, run exactly as written |
codeaf senior-dev "<brief>" | Hand a change to senior-dev with no screen; --max-cost and --max-hours bound it |
codeaf run <program> --input <file.json> | Run one saved program |
codeaf do exits 0 when done, 1 when it could not run, 2 when unfinished, 3 at a limit, and 4 when it needed an answer from you.
The engine
The engine keeps conversations and tasks running with no window open.
| Command | What it does |
|---|---|
codeaf engine --status-all | Every engine on this machine and what it holds |
codeaf engine --status --workspace <folder> | Which engine holds one folder |
codeaf engine --stop --workspace <folder> | Stop the engine for one folder |
codeaf engine --stop-all | Stop every engine; the next launch starts fresh ones |
Install, keys and health
| Command | What it does |
|---|---|
codeaf version | Which build you run, and when it was built |
codeaf update | Install the newest build of your channel |
codeaf update --check | Say whether a newer build exists, and install nothing |
codeaf update --dev | Switch to the newest dev build; also --stable, --rc, --staging |
codeaf update --version <tag> | Install one exact release tag |
codeaf doctor | Is this install healthy, and where things live |
codeaf connect <service> | Connect a model service; bare codeaf connect lists them |
codeaf disconnect <service> | Remove a service's key |
codeaf models | The models this machine will use; --refresh fetches today's list |
codeaf manual "<question>" | Read the built-in manual; costs nothing, needs no key |
codeaf logs --tail <n> | Recent model calls; --follow keeps watching |
codeaf why <task-id> | What a piece of work did and what it cost |
codeaf cache clean | Delete the build cache |
codeaf telemetry off | Turn off anonymous usage counts; codeaf telemetry info shows what is sent |
codeaf --help | Every verb; codeaf <verb> --help for one |
Mac and Linux
Option, Meta and the terminal settings the keys need.
- Alt is Option on a Mac. CodeAF draws every Alt chord as
opton macOS. It is the same key. - Option must send Meta. If Alt+1 types
¡instead of moving, your terminal sends Option as a character. CodeAF shows one line naming the setting. In iTerm2 it is Profiles › Keys › Left Option: Esc+. In Terminal it is Profiles › Keyboard › Use Option as Meta key. In Ghostty it ismacos-option-as-alt = true. - Ctrl and a digit. Ctrl+1 to Ctrl+9 and Ctrl+. also jump to places, on terminals that report the kitty keyboard protocol: kitty, Ghostty, WezTerm, foot and Windows Terminal.
- Cmd+Enter. Holding a message above the box is Cmd+Enter on a Mac and Super+Enter on Linux.
- Word and line jumps. Alt+← and Alt+→ jump a word. Ctrl+A and End go to the start and end of the line everywhere.