Guards
Hooks stop an agent's shell commands from running network code, using GitHub outside your owners, pushing past review, or polling in loops.

How it works
- Agent's shell command
- Guard hook
- The command runs or stops
Workflows
Shell guards
Off until you turn it onAgents cannot pipe network code into a shell, run a package the project lacks, change how Git maps URLs, use gh outside your GitHub owners, poll in a loop of turns, kill their own shell with pkill -f, skip Git hooks, force-push without a lease, or push to main of a repository that takes pull requests.
Signed Git allowlist
Off until you turn it onNeeds a devboxGit refuses any remote whose GitHub owner is not on a list you signed. With the shell guards on, gh follows the same list.
Read before you turn it on
Git refuses every remote outside the signed list, including other hosts than GitHub. Root, or anyone with sudo, can remove it. It stops mistakes, not a hostile agent. An agent that runs as you can override it with its own Git config, or edit the staged script before you run it with sudo.
Package age
Off until you turn it onPackage installs through pnpm and Bun take only versions at least three days old, unless a project or you set another age.
OOM survival
Off until you turn it onNeeds a devboxBefore memory runs out, earlyoom stops a runaway test or build, and T3's agent threads survive when the kernel kills a process inside them.
gh stack
Off until you turn it onNeeds GitHubFleet installs GitHub's gh stack extension at a pinned version with a checked digest, and the push guard counts the branches a gh stack push sends.
What it costs
You run nothing. A hook checks each shell command before it starts.
Know before you turn it on
A guard can refuse a command you meant. The refusal says why and what to do instead. Every guard is off until you turn it on.
Settings4 settings that your agent asks about
guards.personWhom should a refusal tell the agent to ask, such as your first name?Default:the person who runs this machineguards.ownersWhich GitHub owners may agents use, separated by commas, such as you,your-org?guards.main-push-reposWhich GitHub repositories take pushes straight to main or master, as owner/name separated by commas?guards.signersWhich SSH public keys may sign the Git allowlist, one per line?
Add Guards to your Fleet
Paste this prompt into a T3 Code thread on a machine that runs Fleet.
Your install prompt
Add this Fleet pack to my setup with me: Guards. Fleet already runs on this machine. Ask me each choice with your question tool, and run every command yourself. 1. Run `fleet update`, so this machine has the newest engine and packs. Then run `fleet packs`, and leave out each pack that is already on. 2. Read the setup note of each pack. Ask me what it asks, and collect the flags that it names. Where a note names "the setup command" or "the command in step 9", use the `fleet packs` command of this prompt. Do not run a step that a note puts after that command yet. - Guards: ~/.local/share/fleet/engine/packs/guards/SETUP.md 3. Turn the packs on with one command, and add the flags that the notes name: fleet packs --add guards 4. Do the steps that each note puts after the command. 5. Run `fleet doctor`, and explain each line. Do each `To do:` line with me, and say what a sign-in is for before it opens. 6. My other machines take the change at their next `fleet update`. To give it to one now, run `fleet update` there.