--- title: "Coding agents" description: "What tty7 does around Claude Code, Codex, TraeCode, and 21 others — without ever wrapping them." --- tty7 recognises coding agents running in a pane and builds around them. It does not wrap them, proxy them, or replace their interface: the agent you start is the agent you get, running in a normal PTY, with its own UI. tty7 adds the things a terminal is in a position to add — who is running where, what they need, and what changed. Agent sessions in the tty7 sidebar ## Which agents Twenty-six CLIs are recognised on sight, by the command running in the pane: | Agent | Command | |---|---| | Claude Code | `claude`, `claude-code` | | Codex | `codex`, `codex-cli` | | TraeCode | `traecli`, `traex` | | Gemini | `gemini`, `gemini-cli` | | Copilot | `copilot` | | Cursor | `cursor-agent` | | Amp | `amp` | | OpenCode | `opencode` | | Aider | `aider`, `aider-chat` | | Goose | `goose` | | Droid | `droid` | | Grok | `grok` | | Qwen Code | `qwen`, `qwen-code` | | Kimi Code | `kimi`, `kimi-code` | | Qoder CLI | `qoder`, `qodercli` | | Qoder CN CLI | `qodercn`, `qoderclicn`, `qoder-cn` | | Crush | `crush` | | CodeBuddy | `codebuddy`, `codebuddy-code`, `cbc` | | Auggie | `auggie` | | Hermes | `hermes` | | Vibe | `vibe`, `vibe-acp` | | Antigravity | `agy`, `antigravity` | | Pi | `pi` | | Oh My Pi | `omp` | | Prime Agent | `prime-agent` | | Empryo | `empryo` | Detection sees through the usual disguises: a full path, a `.cmd` or `.exe` on Windows, leading environment assignments, and an interpreter in front (`node .../claude/cli.js`). ### Your own wrapper If you launch agents through a wrapper script, map its name to an agent in `config.json`: ```json { "agent_commands": { "cc": "claude", "work": "codex" } } ``` The key is your command's name; the value is one of the slugs above (`claude`, `codex`, `traecli`, `gemini`, `aider`, `amp`, `opencode`, `copilot`, `cursor`, `goose`, `droid`, `pi`, `auggie`, `hermes`, `vibe`, `antigravity`, `grok`, `qwen`, `omp`, `kimi`, `qodercli`, `qoderclicn`, `crush`, `codebuddy`, `empryo`, `prime-agent`). ## Quick launch Every agent tty7 finds on your `PATH` is one row away in Search Everywhere: **Agent: Claude Code**, **Agent: Codex**, and so on, most-used first — type `agent` in its Terminals tab to list them. The New Tab menu names the ones you have actually run, three at most, and **Other Agents…** opens that same list for the rest. **New Agent Tab** (⌘ ⇧ A on macOS, unbound elsewhere) starts whichever agent you used last. A launch always opens a new tab in the current tab's directory and types the agent's command into its shell, so the agent is detected, tracked and resumed exactly as if you had typed it — and quitting it leaves you at the prompt. Each `Agent: …` command is bindable too, as `LaunchAgent:`. By default an agent launches as its bare binary (`claude`, `codex`, `cursor-agent`, …). Give it a command line of its own with `agent_launch`: ```json { "agent_launch": { "claude": "claude --dangerously-skip-permissions", "codex": "cx --profile work" } } ``` A wrapper named there (`cx` above) is recognised as that agent without an `agent_commands` entry. To keep the flags a running agent was started with, right-click its pane and choose **Set Current Launch Args as Default**; tty7 writes them into `agent_launch`, minus the session they resumed and any prompt. In a remote workspace tty7 cannot read the far machine's `PATH`, so it offers the agents it has already seen running there: start one by hand once and it joins the list. A wrapper named in your local `agent_launch` is only recognised over there if the remote `config.json` names it too. ## What you get for free Just by running an agent in a pane: The tab chip and sidebar row show which agent runs where, so ten tabs stay legible. The branch and working-tree diff on the row, refreshed as the agent works. A pane lost to a reboot relaunches the conversation, carrying its original flags. [More →](/agents/sessions) Actions that hand the current selection or the repo's `git diff` to the running agent as a prompt. ## What needs a hook Live status — **working**, **needs your input**, **done** — comes from the agent itself, over a channel tty7 installs into that agent's configuration. It powers the status dots, the notifications, the tray icon, and `tty7 wait`. Installing takes one click per agent under **Settings → Integrations**. [Status and notifications →](/agents/status) ## Where to go next Hooks, status dots, the tray icon. Resume, fork, and copying a session id. One agent driving another with `tty7 wait`.