Quick Reference
Everything you need to get going, on one page. Each section links to the chapter that explains why.
Set up
Before you install, decide where this will run. Your everyday machine, a separate user account on it, a container, a virtual machine, or a dedicated machine. This is much easier to choose now than to retrofit later, and the more autonomy you plan to give an agent, the more that choice has to carry. → System-level control
# Install Claude Code, Codex, or both (macOS and Linux)
curl -fsSL https://claude.ai/install.sh | bash
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# Start either agent from your project directory
cd ~/repos/my-project
claude # or: codex
The DunnLab plugin is an optional Claude Code implementation of this manual’s conventions. Install it with:
claude plugin marketplace add caseywdunn/dunnlab_code
claude plugin install dunnlab-code@dunnlab
Codex can follow the same durable project guidance from AGENTS.md; Getting Started covers both paths.
Also install the GitHub CLI and run gh auth login so the agent can work with repositories, issues, pull requests, and checks from the terminal.
Useful orientation commands differ by harness:
| Need | Claude Code | Codex |
|---|---|---|
| Session status | /status | /status |
| Loaded context or instructions | /context | /status; inspect AGENTS.md |
| Permissions | /permissions | /permissions |
| Help | /help | /help |
| DunnLab plugin check | /dunnlab-code:dunnlab-check | Not applicable |
Once it runs, set your own defaults. Claude Code uses ~/.claude/settings.json; Codex uses ~/.codex/config.toml. Put shared project guidance in AGENTS.md, with a one-line CLAUDE.md import for Claude Code. Deciding these once beats re-deciding them every session. → Harness-level control, Managing Context
A working session
The rhythm matters more than the prompting. In rough order:
- Start with planning, not edits. Describe what you want and let the agent propose an approach before it writes anything. This is the cheapest place to catch a wrong direction.
- Review the plan, then approve it. For substantial work, have the agent write it to
PLAN.mdordev_docs/overview.mdin the repository and commit it before implementation. - Work in small, verifiable steps. A change too large to read carefully was too large to ask for in one go.
- Let the agent run the code. Do not paste error messages—ask it to run the thing and read the error itself.
- Commit after each verified step, and let the agent write the message.
- Start fresh before the next task. A stale conversation makes everything worse.
Permissions
Claude Code and Codex expose the same two ideas—what can technically run and when the agent must ask—through different controls:
| Goal | Claude Code | Codex |
|---|---|---|
| Inspect and plan | Plan mode | read-only sandbox |
| Normal local work | Accept edits or Auto | workspace-write sandbox with on-request approvals |
| Change interactively | Shift+Tab or /permissions | /permissions |
| Unrestricted inside trusted isolation | bypassPermissions | danger-full-access with approvals bypassed |
Use the least privileged configuration that still lets routine work proceed without babysitting. → Managing Security, Coding Agents
Sessions
Both agents can resume saved local sessions:
claude # new Claude Code session
claude -c # continue the most recent Claude Code session
claude -r # choose a Claude Code session
codex # new Codex session
codex resume # choose a Codex session to resume
Remote work with tmux
When you run a coding agent over SSH—on a cluster or a dedicated machine—a dropped connection kills whatever was running. tmux keeps the process alive on the remote host so you can reconnect to it.
tmux new -s work # start a named session
# ... work; Ctrl-b d to detach ...
tmux ls # list sessions
tmux a -t work # reattach
tmux kill-session -t work # end it
Ctrl-b d is the one to remember: press Ctrl-b, release, then d. Your work keeps running and you can log out.
This pairs with claude -c or codex resume, and the two solve different halves of the problem. tmux keeps the process alive; the harness’s resume command recovers the conversation if the process did die. For a long unattended run you want tmux.
This repository ships a tmux configuration and cheat sheet with saner defaults, including copy-paste that works over SSH without X11 forwarding.