Fleet
All packs

Guards

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

Add to your Fleet

How it works

  1. Agent's shell command
  2. Guard hook
  3. The command runs or stops

Workflows

  • Shell guards

    Off until you turn it on

    Agents 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 devbox

    Git 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 on

    Package 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 devbox

    Before 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 GitHub

    Fleet 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 machine
  • guards.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.
Open in T3 Code

Add more packs in one prompt