Agents
Saggar is a terminal manager, so an agent is just a program running in a shell — but it is the program the whole app was built for, and knowing one is there buys better status, exact resume, and an answer button.
Recognizing one
Saggar recognizes an agent two independent ways, because either alone has a hole.
- The process walk. Saggar walks the process tree under each shell, so a
claude,codex,agy,pi,opencode, orcopilotyou started by hand is recognized exactly like one Saggar launched. - The on-screen scan. When the walk can't name it — an unfamiliar launcher, or a walk that raced the launch — the agent is recognized by its on-screen chrome instead. The chip lights whenever an agent is plainly there and not only when the process tree cooperates.
Your roster
Saggar knows six CLIs: Claude Code, Codex, Antigravity CLI, Pi, OpenCode, and GitHub Copilot CLI. Onboarding asks which of them you actually use, and Settings ▸ Providers changes the answer any time. The roster fills the new-session menu, decides which handshakes get offered, and narrows the on-screen scan.
Models
| Providers | Where models come from |
|---|---|
| Claude Code, Codex, Antigravity CLI | Saggar's own catalog. Each provider's card in Settings ▸ Providers has a More models reveal for the rows the catalog hides by default. |
| Pi, OpenCode | The credentials you have given them. Their cards ask the CLI itself (pi --list-models or opencode models) and let you pick which of the reported models get their own row in the new-session menu. |
The roster never hides a running agent
Turning a provider off deliberately does not gate recognition. A codex you
start by hand with Codex turned off still lights its chip and still gets
answered, because turning a provider off means "stop offering me this", not
"lie to me about what's running".
Provider capabilities
Any terminal agent can run in Saggar. First-class providers add explicit recognition, launch surfaces, lifecycle integration, exact resume, and other features where the provider exposes them.
A guarded custom resume binding can restore another durable tool without adding it to the provider roster. The Providers section carries the capability table and one page per provider.
Lifecycle integration
Lifecycle integration is opt-in from onboarding or Settings ▸ Providers. Saggar installs its entries in each provider's own hook, extension, or plugin configuration, and removes only those entries when you uninstall it. Provider events outrank process and screen inference when they are available.
The process walk and the on-screen scan stay underneath as the base layer, for other CLIs, declined installs, and setups Saggar has never seen. Restoring a project resumes supported agents where they left off.
Following a chat's progress
With the Claude Code or Codex hooks installed, each conversation gets one read-only progress card in the monitor dock. The card stays read-only, so the session itself remains the place to steer the work.
What the card shows
- The spine is the steps the agent means to take: Codex's plan, Claude's todo list, or the tasks it has delegated.
- The agents working a step are nested beneath it. Parallel and nested agents share the same card, whose header reports the step figure, or their aggregate working or finished state when the chat has no plan.
- The step count also rides the session header and the terminal's row in the project menu, so how far along a chat is stays legible without opening it. Hovering a row shows the steps themselves.
Claude's native task and teammate hooks feed the same card, so a delegated task moves from queued to working to finished without Saggar guessing from terminal output. Post-compaction and model-switch hooks keep the conversation's lifecycle details current too.
Opening an agent node
Each agent node starts folded. Open it to follow completed tool calls and their file paths, commands, or other short details.
When a subagent finishes, its node shows the result until the parent collects it and finishes the turn. If you try to close the session while a subagent is still working, or before Claude has collected a finished result, Saggar warns you first.
Putting the card away
Dismissing a card puts it away until the work moves; the agents keep running either way. If the cards get in the way for good, turn off Show progress cards under Settings › Interface. The close-time warning stays on.
Watching a chat's context
Agents get less reliable as their context fills, well before the window is full. Once a Claude Code or Codex chat passes the warning point, 50% by default, a context monitor docks in the monitor dock with how full it is. It turns urgent at 85%, near where both agents compact on their own.
Saggar uses the agent's own count when it is available. Here Codex reports
241k of a 258k context window used in /status.
Compacting
Compact types /compact into an idle chat. While the agent is working it
reads Compact next and queues the command for the end of the turn, rather
than typing into the middle of one. It waits while the chat needs you. Closing
the card hides it until the context is compacted.
Where the context has gone
Expand the card to see the system prompt and tools, memory and skills, messages, reasoning, and tool calls, with the heaviest tools beneath. The figures are estimated from the transcript and scaled to the agent's own count. The matching Saggar monitor below totals 241k too, while showing what occupies it.
Set the warning point with Warn when context reaches under Settings ▸ Providers. Away compaction uses the same threshold.
The Saggar skill
The handshake teaches Saggar about an agent. The optional Saggar skill works
in the other direction: it teaches the agent the saggar command, when a
session deserves your attention, when a note is enough, and why a monitor and
a quick run are different tools.
It is offered during onboarding and under Settings ▸ Providers for all six providers: Claude Code, Codex, Antigravity CLI, Pi, OpenCode, and GitHub Copilot CLI.
How it is installed
- The skill installs as
saggar-cli/SKILL.mdin that provider's user-level skills directory. Saggar never installs it silently. - If the file on disk differs from the copy in this build, the app offers to replace it rather than guessing whether it is old or hand-edited.
- Removing it deletes only Saggar's file and an empty folder, never neighboring skills.
Following a goal
Codex goals appear in a read-only card at the top right of the terminal. The card shows the objective, current status, elapsed time, and tokens used. When the goal has a token budget, it also shows progress against that budget.
Collapse the card to keep its header visible, or dismiss it to clear the terminal. Dismissing the card leaves the goal running; use the Codex session to steer the work.
Installing a missing CLI
Setup checks every provider in your roster. A missing Codex or GitHub Copilot CLI can be installed through Homebrew; Claude Code, Antigravity, Pi, and OpenCode each use their own installer.
The same check guards every agent launch, so choosing a model whose CLI has since disappeared opens a visible repair prompt in the terminal before anything changes on the Mac.
Supervision and automatic approval
Claude has Auto mode, and Codex has Auto-review and full access. You can configure each agent's native controls. Saggar adds a configurable layer of your own controls across agents, so the same safeguards apply whichever one is running.
Supervised sessions
Saggar answers a session's routine prompts for you unless the session is Supervised. Supervision is per session and appears as a chip in its header. A prompt Saggar already answered raises neither a banner nor a sound. Being called over to look at something that resolved itself is exactly the interruption automatic approval removes.
The quiet is keyed to the prompt. An unsupervised session blocked on something automatic approval will never answer — an arrow-key wizard, a bell-only needs-you — still reaches you. Unsupervising a session is never a way to go quiet permanently.
Coverage, preview, and decision history
Settings ▸ Agents ▸ Supervision shows each provider's coverage and lets you check hook configuration. Configured hooks do not prove that the provider trusts or runs them. Codex's /hooks and /permissions show its effective controls. Intercept checks supported Codex Bash calls; input sent later to a running shell is not checked again.
Command preview. Test a command against your rules without executing or saving it. The preview explains matching safeguards and suggests a narrower next step. No match means only that the current patterns did not match, not that the command is safe.
Pro and Teams include local decision history. See automatic approvals, requests left for review, intercepted actions, checked actions with no matching rule, and requests Saggar could not inspect. Each entry identifies the provider, session when available, time, decision source, and rule or reason. History covers requests received by Saggar's hooks and recognized terminal permission prompts, not every action an agent takes.
- The latest 1,000 decisions stay on this Mac, separately for each account. Commands, paths, tool arguments, and custom rule labels are not stored.
- Refresh, filter, or clear history in Supervision settings.
- History starts while your signed-in account has Pro access, which Teams inherits. Sign in again after changing your plan to refresh access. Once that access is removed, new recording stops and retained history is hidden until access returns.
- Safety rules, coverage details, and command preview remain available on every plan.
Secret and credential checks. Built-in patterns also hold likely secret-file and credential-file access, commands that print a stored credential, and explicit outbound secrets or environment dumps. These are targeted checks, not complete data-flow analysis: indirect reads, encoded data, and unfamiliar tools may fall outside their coverage. Saggar suggests next steps without rewriting or executing a replacement command.
What it refuses
Automatic approval will not approve a genuinely destructive command. These it hands back on screen for a human to read rather than accepting unseen:
- an
rm -rf, asudo, acurl … | sh; - a force push or a hard reset;
- a raw write to a disk device, a fork bomb, a machine power-off;
- an infrastructure or cloud teardown, a Docker volume delete, a dropped table;
- a package publish, a production deploy or release;
- a world-writable permission change, a change to system services or security settings, a broad process kill;
- an agent taking the wheel of your browser through a browser-automation MCP server.
The list is biased toward false positives on purpose: a false positive costs you one manual approval, and a miss auto-runs something irreversible, which is not a close trade.
What it answers for Codex
With Codex, Saggar answers through Codex's own permission hook, before the prompt is drawn. An approval Saggar gives there replaces your review: Codex runs the request without showing it to you.
So the hook only ever answers the two requests it can read whole, a shell command and a file edit, and only after the deny-list has read the command text and every other argument. Anything else Codex asks about, such as an MCP tool that declares itself destructive, a network escalation, or a permission grant, is left for Codex to prompt about as usual.
Codex's Auto-review sits inside Codex and can vet the same requests with a model; it complements Saggar's deny-list rather than replacing it.
The same asymmetry governs remote control, where approve sends a waiting prompt's own default answer and nothing else — see the security model.