ai enhancements
What Fleet knows about the agents running inside it, and the settings that control it.
A shell in Fleet is a shell. Start Claude Code, Codex or Antigravity in one and the row it lives on starts reporting: what the session is doing, whether it is blocked on you, which model, how much context is left. That layer is what the rest of the app is built on — the badge, the jump-to-next shortcut, the sorting, the notifications all read from it.
The agents Fleet supports
| Agent | Command | Reports |
|---|---|---|
| Claude Code | claude |
Everything below |
| Codex | codex |
Everything except why a session ended |
| Antigravity | agy |
State, model and context percentage |
Agents differ in how much they will tell Fleet, and where one reports less its rows say less rather than guessing. The differences are set out under what each agent reports — they are gaps in those agents’ own hooks, not in Fleet.
Any mix of the three can run side by side. Once you have more than one set up, each row carries a small mark naming which agent it is.
Turning it on
Settings (⌘,) has a section per agent found on your Mac: Claude Code integration, Codex integration, Antigravity integration, each with its own setup button. The first-run guide (Help → Welcome to Fleet) offers the same three.
Each installs the fleet plugin into that agent’s own configuration, so you
need Node on your PATH. For Claude Code that is ~/.claude/skills/fleet,
and every other Claude config directory it finds; that directory is the only
thing setup writes.
A session that is already open does not pick the plugin up on its own. In
Claude Code, run /reload-plugins. Codex and Antigravity read their plugins at
session start, so start a new session there.
Codex needs one thing the others do not. It runs no hook it has not been told to
trust, and an untrusted hook is listed, enabled, and silently never runs, so
setup writes the trust entries into ~/.codex/config.toml as well. A Codex
session that was already open when you ran setup shows its own review screen for
the new hooks.
Re-run setup whenever you like. Fleet also refreshes the plugins on launch, so they keep pace with the app.
Config directories
CLAUDE_CONFIG_DIR moves Claude Code’s whole configuration elsewhere, and a
session that loads a different one loads a different set of hooks. Fleet finds
~/.claude and any ~/.claude* you are using, and installs into each.
One somewhere else has to be named: macOS does not let Fleet read another process’s environment, so there is nothing to discover it from. Add it under Settings → Claude Code integration → Add Config Directory….
If a plugin is switched off
A plugin’s hooks run only while the agent has that plugin enabled. Switch
fleet off and every row for that agent goes quiet at once. Fleet says so, and
offers to turn it back on in the same pane.
What a row tells you
| The row says | What happened |
|---|---|
| Working | A turn is in flight |
| Your turn | It stopped and handed back |
| Needs permission | A tool call is waiting on your answer |
| Question | You have been asked something |
| Plan ready | A plan is written and waiting to be read |
| The server’s name | An MCP call is in flight |
| PR opened | It finished, and shipped something |
| API error · 529 Overloaded | The turn died on the API |
| Login required | The session cannot recover until you log in |
Colour carries the same information at a glance: red for a permission grant, violet for a question or a plan, amber for your turn, blue for MCP, green for a PR, grey for work in progress.
A plan is violet with a clipboard rather than red with a warning triangle. A plan has been written and is waiting to be read, which is a different request from “may I run this command”.
Alongside the status, each row can carry the model, the context percentage, the permission mode, a count of running subagents, the git branch, and how long the session has been waiting on you (“Your turn · 6m”). Settings → Sidebar Rows arranges them: drag any part to another line, or onto Hidden to leave it out. Only the title has to stay; see Configuration.
What each agent reports
Claude Code reports all of it. The other two have gaps, and they are gaps in those agents’ own hooks rather than in Fleet:
- Codex reports everything Claude Code does except why a session ended, which is why Close the session when Claude exits stays Claude-only. Its permission prompts name the tool they are about, so Approve and Deny are offered straight away.
- Antigravity reports state, model and context percentage. Nothing fires when a permission prompt goes up, there are no subagent events, and nothing reports a session ending, so its rows never show Needs permission or a subagent count.
Session activity
A working session carries a short line under its title saying what it is doing: “Starting Astro dev server”, “Editing Session.swift”, “Running swift build”.
Claude Code writes a description for nearly every shell command it runs, and its other tool calls name the file or pattern they work on, so Fleet reads the line from the session’s own transcript and shortens it rather than asking anything to invent one, which is why it keeps up with the session and costs nothing to run. Codex and Antigravity describe the tool call as they make it, and Fleet takes the line from there.
The line describes the newest tool call. For Claude Code it is on by default, and switches off under Settings → Activity & detection → Session activity subtitles.
That line is the row’s Detail part. Beside the status, where it sits by default, it shows only while the session works, in place of “Working”. On a line of its own it always shows: what the session was last doing once its turn has ended (“Last · Editing Session.swift”), and what a permission prompt or question is about (“git push origin main”).
Stalled sessions
A session reporting Working with no terminal output for a while is marked
stalled. That usually means the agent went away without saying so: a crash,
or a kill. Sending it any input clears the state. The threshold is a setting,
and stalled sessions can raise a notification of their own.
Resuming a conversation
Restore sessions on launch brings back the shells you had open, and Resume conversations on launch reopens the conversation each of them was having, so you get the conversation back rather than an empty prompt in the right directory.
Copy Resume Command on a row’s right-click menu puts that agent’s own resume command on the clipboard, for anywhere else you want it. It is absent when there is no conversation to resume.
Turning it off
Each agent keeps the plugin in its own place, and removing it is the whole of it:
- Claude Code —
rm -rf ~/.claude/skills/fleet, once for each config directory you installed into. - Antigravity —
rm -rf ~/.gemini/config/plugins/fleet. - Codex —
codex plugin remove fleet@fleet.
Switching the fleet plugin off in the agent’s own plugin list has the same
effect without removing anything.
Fleet keeps working either way. Those sessions appear as ordinary shell rows.
If rows have gone quiet and you did not do that, see Troubleshooting.
Something here wrong or missing? help@fleet-terminal.app.