Agents
The five agent CLIs Dray runs (Claude Code, Codex, pi, fx and Grok Build), what each supports side by side, how to sign in to each, and what is particular to each one.
Dray does not have a model of its own. It runs a coding agent CLI that you install and sign in to, and draws its work in the chat window. Each session runs one agent, picked when you start it.
You pick the agent in the composer’s model picker, in the row of marks at its top. ⌘⇧A steps to the next one. The row is only there on a new task: a session keeps the agent it started with. To hide an agent you don’t use, switch it off in Settings → Accounts.
Dray installs no agent and stores no agent login. Each agent keeps its own, exactly as in your terminal: if an agent works there, it works in Dray. Install commands are in Install Dray.
What each one supports
| Claude Code | Codex | pi | fx | Grok Build | |
|---|---|---|---|---|---|
| Models | Fable, Opus, Sonnet, Haiku | Read from Codex | Read from pi | Read from fx, per provider | Read from Grok Build |
| Effort levels | Low to Max | Low to Max, plus Ultra on some models | pi’s levels for each model | The levels each model takes | Low to Extra High |
| Fast mode | Opus models | Models that offer it | No | New sessions only | Grok 4.7 |
| Permission modes | Ask every time, Plan, Auto, Bypass permissions | Ask every time, Auto, Bypass permissions | None | Ask every time, Auto | Ask every time, Auto, Bypass permissions |
| Slash commands | Claude Code’s commands and skills | Skills | pi’s commands | Skills | Grok Build’s commands and skills |
| Images in prompts | Yes | No | Yes, if the model takes them | No | No |
| Fork a session | Yes | No | Yes | No | Yes |
| Worktrees | Yes | Yes | Yes | Yes | Yes |
| Change during a turn | Model, permission mode, fast mode | Nothing | Model, effort | Model, effort, permission mode, for the next turn | Model, effort, fast mode |
| A prompt sent during a turn | Joins the running turn | Joins the running turn | Joins at the next tool call | Waits for the turn to end | Joins at the next step |
What the rows mean:
- Change during a turn: these controls stay live while the agent works, and your change applies to the next thing the agent does. The rest are locked until the turn ends, with a tooltip saying so. Between turns you can change all of them; where the agent cannot take a change in place, Dray restarts it behind the session and the conversation carries on.
- A prompt sent during a turn: it waits under the transcript, and most agents read it before the turn ends.
- Worktrees: Claude Code makes its own worktree. For the others Dray makes it before the agent starts. Either way it starts from your remote’s default branch, like
origin/main. See Worktrees.
Models, effort, fast mode and permission modes are covered in The composer. Forks are in Sessions.
Signing in
| Agent | Sign in from a terminal | Other ways, in Settings → Accounts |
|---|---|---|
| Claude Code | claude auth login |
Claude subscription, or an Anthropic Console account (billed per token) |
| Codex | codex login |
ChatGPT subscription, or paste an OpenAI API key |
| pi | Run pi, type /login, pick a provider |
Sign in to a provider, paste a provider’s API key, or Add an account |
| fx | fx login, or fx login vercel, fx login codex, fx login grok |
Vercel account, or an AI Gateway key |
| Grok Build | grok login, or grok login --device-auth with no browser |
Grok account, or Device code |
If a turn fails because the agent is logged out, the composer says so, like “Codex isn’t logged in”, and offers Log in, which runs the login in Terminal, and Copy command. Settings → Accounts shows who each agent runs as.
Claude Code
Anthropic’s agent, and the one Dray supports most fully.
- Models. Fable 5.1, Opus 5.5 and Sonnet 5 follow the latest model of their family, so a session moves up when Claude Code does. Fable 5 and Opus 5 are pinned, for when you want that exact generation. A new session starts on Opus 5.5. Haiku 4.5 has no effort levels.
- Effort is locked during a turn. A change applies from your next message.
- Slash commands. Type
/for Claude Code’s built-in commands, your own and the project’s, plugin commands and skills./clear,/fast,/modeland/renameare hidden, because Dray has its own controls for them and would not follow their effect. Typed by hand they still run, so avoid them. - MCP servers come from Claude Code’s own configuration, the same as in your terminal. Dray adds none. It does let the agent run
drayitself without a permission card, so it can start and message other sessions.
Limits:
- An effort change waits while a background task the agent started (a dev server, a watcher) is still running, and nothing says so. Stop the task first: open the right panel (
⌘E), pick More, and stop it, or press Stop all. - A command, skill or plugin you add while Dray runs appears in the
/picker only after you quit with Quit completely and open Dray again.
Codex
OpenAI’s agent. Dray asks Codex which models it has, so a model OpenAI ships appears in the picker without a Dray update. A new session starts on 6 Sol, or 6 Astra if your Codex does not list 6 Sol.
-
Effort. Max is the deepest reasoning. Ultra, on the models that offer it, is the deepest reasoning plus Codex handing parts of the task to helpers on its own. Every model starts on Medium.
-
Permission modes. Codex has two settings where most agents have one: when it asks, and what its commands may touch. Commands run in a sandbox the operating system enforces, so a write outside the allowed area fails whether or not anyone was asked.
Dray Codex What happens Ask every time Ask for approval Asks before acting. Commands can write in the project. Auto Approve for me Works freely in the project. Asks only to step outside it. The default. Bypass permissions Full access Never asks. No sandbox. -
Skills.
/lists your Codex skills. Codex’s own menu commands, like/modelor/new, are not listed. -
MCP servers come from Codex’s own configuration. Dray adds none.
Limits:
- Dray needs a recent Codex. An old one reads as not installed: run the installer again.
- Nothing changes during a turn. Settings wait for the turn to end.
- Images you attach are not sent. Only the text goes.
- Codex sessions cannot be forked.
pi
An open-source agent from pi.dev that works with many model providers.
- Models are whatever your signed-in providers serve, grouped by provider in the picker and read fresh every couple of minutes. The shortlist starts empty, so the picker first says “No models shortlisted yet”: choose Shortlist models and star the ones you want. Until you pick one, pi uses its own default.
- Effort is pi’s thinking levels for each model. Off and Minimal are not offered.
- Permissions. pi has none of its own and runs what the model asks for, so there is no permission picker. A pi extension that gates tools can still ask, and its questions show as cards.
- Images are sent. If the model takes text only, the composer warns you that the provider may refuse it.
- MCP servers. Dray hands pi none. pi’s own setup and extensions decide what tools it has.
fx
Vercel’s agent, from fx.sh. It runs models through one of three providers: the Vercel AI Gateway, a Codex subscription or a Grok subscription. A Codex login elsewhere on your Mac does not count for fx.
- Providers. In the model picker, the three marks after fx’s are the providers. Click one and the list changes to its models. It works on a running session too, moving it at your next message, but not during a turn. It also changes fx’s default provider in your terminal.
- Fast mode is set when a session is created and cannot change after. It is fx’s own setting, so it changes your terminal’s default too. On the AI Gateway the separate “fast” model ids are hidden; the switch is how you reach them.
- Effort is per model. If fx refuses a level, the turn still runs without it and the transcript says which levels the model takes.
- Prompts sent during a turn wait and go together as one turn when it ends, each in its own bubble. Now under the last one, or
⌘⏎, stops the turn and sends them at once.Esctakes the newest back into the composer. - Skills.
/lists skills from the same folders fx reads:.fx/skills,skills,.opencode/skills,.codex/skills,.claude/skills,.agents/skillsand.claw/skillsin the project, and~/.fx/skills,~/.config/opencode/skills,~/.codex/skills,~/.claude/skills,~/.agents/skillsand~/.claw/skillsat home. A skill is a folder holding aSKILL.md. - MCP servers. Under Dray, fx does not read your MCP servers itself, so Dray passes it every server in
~/.fx/mcp.json(the filefx mcp addwrites). For a server that needs a token, setbearer_token_envin that file to an environment variable holding it, and export the variable in your shell profile, like~/.zprofile. Dray does not pass a server you signed in to withfx mcp auth, a server that fails to start, or servers from a project’s own.mcp.json. - Session titles. Dray names fx sessions itself, and turns off fx’s own titles in
~/.fx/settings.jsonto avoid a delay after the first turn. That applies to fx in your terminal too.
Limits:
- Images you attach are not sent. fx sessions cannot be forked.
- Provider and fast mode are fx’s global settings, shared with your terminal.
- fx shortens what a tool returns, so a long result shows only its start.
- A subagent fx starts has no stop button. Stop the whole turn instead.
- Dray adds its own instructions to the first prompt of each new fx session. They are not shown in the transcript.
Grok Build
xAI’s agent. It reads much of the same setup Claude Code does, like CLAUDE.md, ~/.claude/skills and your MCP servers. A new session starts on Grok 4.7; Grok 4.5 stops at High effort.
-
Fast mode. Grok 4.7 has a fast version. The switch is how you reach it; it is not listed as a model of its own.
-
Permission modes. Permission mode is locked during a turn. Auto never shows a card: Grok Build judges each action itself, and a blocked action fails with its reason given to the agent.
-
Plan mode is not in the picker, because only Grok Build can enter it. Type
/planin a prompt. When the plan is ready a card asks you to Approve plan or Keep planning, and View plan opens it in the right panel’s Plan tab. See Permissions. -
Slash commands.
/lists Grok Build’s commands and skills, but only once a Grok Build session has run in that folder. Until then the picker stays closed. -
MCP servers. Grok Build reads its own config in
~/.grokand your Claude and Cursor settings, and signs in to them itself. A broken server in any of them slows every Grok Build session’s start.
Limits:
- Images are not supported.
- A subagent or background task Grok Build starts has no stop button. A background task keeps running after you stop the turn, until you settle or delete the session.
- Under Ask every time, the agent’s own
draycommands raise a permission card too.