Skip to content

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.