Skip to content

BlastShield is in beta and may contain bugs. Validate it in a non-production environment before relying on it for safety-critical workflows.

Layering

No single sandbox tool covers every threat. Each tool has its own focus:

ToolFocus
BlastShieldCloud CLI destructive commands
agent-safehouseFilesystem policy (dotfiles, project files)
sandvaultUser isolation (separate macOS account)
agent-seatbeltMinimal sandbox-exec wrapper

BlastShield composes with all of them. Use them together for defense in depth.

agent-safehouse provides composable filesystem profiles. Use it for file-level policy, and BlastShield for cloud CLI protection:

Terminal window
# blastshield (cloud CLI policy) → safehouse (file policy) → agent's sandbox
blastshield -p terraform -- safehouse claude --dangerously-skip-permissions

sandvault runs the agent in a separate macOS user account, providing user-level isolation. Layer BlastShield inside sandvault for cloud CLI protection within the isolated account:

Terminal window
# sandvault handles user isolation
# blastshield handles cloud CLI protection inside that account
sandvault -- blastshield -p aws -p terraform claude --dangerously-skip-permissions

agent-seatbelt is a minimal two-file sandbox-exec wrapper. Since both agent-seatbelt and BlastShield use sandbox-exec, they cannot be nested (macOS doesn’t support recursive sandbox-exec). Choose one or the other for the sandbox-exec layer, and use BlastShield-guard for the additional command-level filtering.

Terminal window
# Option A: BlastShield for sandbox-exec + guard for command filtering
blastshield -p terraform claude --dangerously-skip-permissions
# Option B: Use seatbelt for sandbox-exec, add guard separately
# (if you prefer seatbelt's profiles for file policy)
agent-seatbelt claude --dangerously-skip-permissions
# Then separately:
export PATH="$HOME/.blastshield/guard:$PATH"

For maximum protection, layer all tools:

┌──────────────────────────────────────────┐
│ sandvault — separate macOS user account │
│ (user-level isolation) │
│ ┌────────────────────────────────────┐ │
│ │ blastshield — sandbox-exec │ │
│ │ (kernel-level, cloud CLI policy) │ │
│ │ ┌──────────────────────────────┐ │ │
│ │ │ blastshield-guard │ │ │
│ │ │ (command-argument filter) │ │ │
│ │ │ ┌────────────────────────┐ │ │ │
│ │ │ │ agent's built-in │ │ │ │
│ │ │ │ sandbox │ │ │ │
│ │ │ │ (tool-level gating) │ │ │ │
│ │ │ │ ┌──────────────────┐ │ │ │ │
│ │ │ │ │ AI Agent │ │ │ │ │
│ │ │ │ └──────────────────┘ │ │ │ │
│ │ │ └────────────────────────┘ │ │ │
│ │ └──────────────────────────────┘ │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────┘
Terminal window
# Just BlastShield — covers cloud CLIs at kernel level
blastshield claude --dangerously-skip-permissions
Terminal window
# BlastShield + guard — kernel + command-level filtering
blastshield claude --dangerously-skip-permissions
blastshield-guard install
export PATH="$HOME/.blastshield/guard:$PATH"
Terminal window
# Full stack: user isolation + cloud CLI sandbox + command guard + clean env
sandvault -- blastshield -c -p terraform -p aws claude --dangerously-skip-permissions
# Plus guard in PATH
export PATH="$HOME/.blastshield/guard:$PATH"

macOS does not support recursive sandbox-exec. If an application already runs in a sandbox (e.g., a sandboxed app, or an outer sandbox-exec call), you cannot start another sandbox-exec inside it.

If you’re already running inside a sandbox:

  • Use blastshield-guard alone (it doesn’t use sandbox-exec)
  • Or restructure your setup so there’s a single sandbox-exec layer
ProjectApproachCloud CLI Protection?File/Secrets Protection?User Isolation?
sandvaultSeparate macOS user + sandbox-exec
agent-safehouseComposable profiles
agent-seatbeltTwo-file minimal wrapper
BlastShieldsandbox-exec + command guard