troubleshooting
The failure modes people actually hit, and what each one means.
Gatekeeper blocks the app
The download was probably truncated. Check it:
spctl --assess --type open --context context:primary-signature -vv ~/Downloads/Fleet-*.dmg
That should say accepted and source=Notarized Developer ID. If it does
not, re-download.
An update went back to the old version
The sidebar banner reads Stayed on Fleet and names the version you are still on. The new version was handed your sessions and, during its two-minute trial, crashed, stopped responding, stopped reading a terminal, or never confirmed it had them. The version you were on took every session back, along with any opened during the trial, and put its own app back in place.
That version is not installed again on its own, and checking for updates by hand does not bring it back either. Report… opens an issue about it in your browser. It stays listed under Settings → Updates → Rolled back, where Allow Again lets it install once more; a later release is offered as usual.
Notifications never appear
Only a build you compiled yourself does this. macOS refuses notifications to any app whose signature has no Team Identifier, and an ad-hoc or self-signed build has none — so no permission prompt appears and no entry shows up in System Settings → Notifications. Check a copy with:
codesign -dv --verbose=2 /Applications/Fleet.app | grep TeamIdentifier
No TeamIdentifier line means no notifications. Replace that build with the
download. Until you do, the Dock badge and menu-bar extra still count
sessions that need you, and ⌘⇧J still jumps to the next one.
Notifications are allowed but nothing shows
Fleet’s alert style is set to None, so its notifications go straight to Notification Center without a banner. macOS reports this as permission granted, which is why the switches under Settings → Notifications look fine.
Settings names this when it is the case — a warning above the switches, with a button to the right pane of System Settings.
Agent sessions show as plain shell rows
The fleet plugin is not installed, or its hooks cannot run.
- If the session was already open when you ran setup, tell it to look
again. A plugin’s hooks are loaded when a session starts, so an older
session reports nothing until it does. In Claude Code that is
/reload-plugins; Codex and Antigravity have no equivalent, so start a new session. This is the common one. - Run setup for that agent — Settings (⌘,) has a section for each one found on your Mac. It is safe to re-run.
- Check that Node is on your
PATH— the hooks are Node scripts. Runwhich nodeinside a Fleet session, not just in your login shell, since a version manager may only be initialised for interactive shells. - Confirm files are appearing in
~/.fleet/session-status/state/.
If a Claude session sets CLAUDE_CONFIG_DIR, Fleet has to know about that
directory to install into it. It finds ~/.claude and any ~/.claude* you are
using on its own; one anywhere else has to be added under Settings → Claude
Code integration → Add Config Directory….
The integration is set up but rows are inert
Most likely the fleet plugin has been switched off. A plugin’s hooks run only
while the agent has that plugin enabled, and switching it off silences every row
at once — the files are all still there, so nothing looks wrong.
In Settings, the Claude Code section reads Set up, but not reporting when
that is the case, and offers to turn the plugin back on; the Codex and
Antigravity sections say it is switched off and name the command that turns it
on. Sessions already open still need /reload-plugins, or a restart, afterwards.
Codex has a second way to be silent: it runs no hook it has not been told to trust, and an untrusted one is listed, enabled, and never runs. Its section names that too, and the button becomes Repair Codex Integration.
Status is stuck on “Working”
Usually the turn failed. An API error — overloaded, a dropped connection, a rate
limit — or an expired login ends the turn without firing any hook, so the state
file stays frozen on whatever it last said. Fleet reads both from the transcript
and puts them on the row: API error · 529 Overloaded, or Login required.
If the row still says Working, Fleet flags it itself: a session reporting
working with no terminal output for a while is marked stalled. That is
usually the agent exiting without its stop hook firing — a crash, or a kill.
Sending any input to the session, or closing and reopening it, clears the state.
A session shows the wrong name
Two things can name a session: Claude’s /rename, and your own rename from
double-clicking the row title. The most recent one wins. If Claude renamed a
session after you did, rename it again from the sidebar.
No activity subtitle under a session
Check Settings → Activity & detection → Session activity subtitles, which is on by default but can be switched off, and that Detail is not under Hidden in Settings → Sidebar Rows.
Otherwise, on the status’s line, where it sits by default, the detail only appears while a session is working; move it to a line of its own to keep it after the turn ends. Claude Code’s detail is read from the session’s transcript, and Codex’s and Antigravity’s from their hooks, so a plain shell has none, and neither does a session whose row is not reporting its status at all. That is the problem covered above.
A folder looks empty inside a session
macOS asks about Desktop, Documents and Downloads one at a time, and a shell Fleet started inherits the answer Fleet got. Settings → Permissions will walk all three now rather than leaving them to turn up mid-task, and Full Disk Access covers every protected folder at once if you would rather not be asked at all.
macOS will not ask again about anything you denied — Files & Folders in System Settings is the only place that can change it, and the pane links there.
Something else
Worth gathering before you dig in: your macOS version, the Fleet version from
Fleet → About, whether the status layer is installed, and what you were
doing when it went wrong. Most problems above come down to one of Gatekeeper,
PATH, or a hook that never fired.
If none of them fit, send those details to help@fleet-terminal.app. Ideas for things Fleet should do are welcome at the same address.
There is also a Discord, which is the faster of the two if someone else has already hit the same thing.
Something here wrong or missing? help@fleet-terminal.app.