Troubleshooting
The failure modes people actually hit, and what each one means.
Gatekeeper blocks the app
It should not. Fleet 0.1.0 is signed with a Developer ID certificate, notarized by Apple and stapled, so it opens on a clean machine with no warning.
If you do see one, the download was probably truncated. Check it:
spctl --assess --type open --context context:primary-signature -vv ~/Downloads/Fleet-0.1.0.dmg
That should say accepted and source=Notarized Developer ID. If it does
not, re-download.
Notifications never appear
This is the same root cause as above, and it is not a bug you can configure around.
UNUserNotificationCenter.requestAuthorization refuses any application whose
signature has no real Team Identifier — and codesign only sets one when the
certificate chains to Apple’s CA. An ad-hoc or self-signed build therefore gets
Error Code=1 "Notifications are not allowed for this application", no
permission prompt appears, and no entry shows up in System Settings →
Notifications.
It resolves when Fleet is signed with a Developer ID Application (or Apple Development) certificate, which is on the roadmap. You can check any build for yourself with:
codesign -dv --verbose=2 /Applications/Fleet.app | grep TeamIdentifier
No TeamIdentifier line means no notifications. In the meantime the Dock badge and menu-bar extra still count sessions
that need you, and ⌘⇧J still jumps to the next one.
Claude sessions show as plain shell rows
The status layer is not installed, or the hooks cannot run.
- Run Settings (⌘,) → Claude → Set up Claude Integration. 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
~/.claude/session-status/state/.
Status is stuck on “Working”
Fleet flags this itself: a session reporting working with no terminal output
for a while is marked as stalled.
Usually it means Claude exited 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, read from
~/.claude/sessions/<pid>.json, 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.
AI summaries never appear
Summaries are opt-in — check Settings → AI. They also only run while a session is actually working, and they are throttled, so a fast-finishing session may never get one.
Fleet invokes claude -p --model claude-haiku-4-5 with
--setting-sources "" --strict-mcp-config and FLEET_SUMMARY=1, reusing your
normal Claude login. If claude is not on the PATH inside a Fleet session,
summaries silently do nothing.
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.