Policies & approvals

How effective policy governs monitored tools and LaunchZero-managed integrations, with named postures, per-tool verdicts, and approval cards.

Last updated

This page covers how LaunchZero governs requests through monitored tools and LaunchZero-managed integrations: gate in the moment, verify after the fact. Effective policy resolves each governed request to Allow, Require approval, or Deny.

Safe and usable by default

Under the recommended Balanced posture, common reads may be allowed, selected writes and sends ask for approval, and unknown calls deny. Effective policy determines the outcome. Explicit, scoped runtime access grants can reduce repeated prompts for a folder or host without silently widening the boundary. LaunchZero-managed integrations can ship with their own policy templates; foreign MCP entries remain unchanged until you explicitly adopt or reinstall them through LaunchZero.

You review and adjust policy in the dashboard - hand-editing files is an advanced path, not the standard workflow.

The three verdicts

Every governed request resolves to exactly one:

Verdict What it means
Allow Runs immediately, under a scoped capability token. No human in the loop.
Require approval Pauses and raises an approval card; runs only if you approve.
Deny Blocked and recorded. Nothing executes.

Under Balanced, unknown calls fall back to Deny. Another posture or a narrower effective rule may produce a different outcome.

The approval workflow

When a call resolves to Require approval, it doesn’t run. It pauses, and LaunchZero raises a real-time approval card showing exactly what the agent wants to do - the tool, the arguments, the target. State-changing calls are gated before execution, not flagged after the fact.

The card isn’t a summary you trust on faith. The exact action shown is the one cryptographically bound for execution, so what you see is what runs: at execution time LaunchZero re-checks that the action about to run is byte-for-byte the one you approved (canonical action hashing). If injected text mutates the action between your approval and execution, the hash diverges and the call is denied instead. You approve an action, not a description of one - the core of LaunchZero’s action-substitution control.

LaunchZero approval request for a medium-risk file write with the exact target, effect parameters, agent, and Approve or Deny actions
The approval card keeps the exact request, risk, agent, effect parameters, and decision controls in one review surface.

Open Advanced details when you need the durable identifiers behind that decision: the Approval ID, Correlation ID, and Canonical Hash that bind the review to the later execution record.

Capability tokens

When effective policy permits a governed action, the Executor carries it out under a short-lived, single-use execution capability scoped to that action. Durable grants are a separate policy choice: they are explicit, scoped, and reviewable until revoked or expired.

The audit trail

Governed calls, approvals, denials, and executions are recorded with their provenance - the durable, after-the-fact record of what the agent asked for, what policy decided, what you approved, and what ran. You browse and export it from the dashboard’s Activity page.

time action outcome
14:22:09 gmail · list_messages allow
14:22:18 gmail · send_message require approval → approved by you · hash matched
14:23:05 gmail · delete_message require approval → denied by you

Under the hood: the two policy layers

LaunchZero governs your agent through two surfaces, and it keeps them in sync for you:

1. The global security posture

Your overall stance is a posture - Locked down, Balanced, Permissive, or Custom - with a default outcome, write-approval setting, and trust thresholds. Balanced is the recommended starting posture. You switch or tune it in the dashboard under Security posture, and effective posture constrains the narrower rules below it.

2. Per-integration policy

Each LaunchZero-managed MCP integration gets its own policy deciding which of that integration’s tools are allowed, held for approval, or denied - a small YAML file LaunchZero manages (and you can edit in the dashboard). On disk the verdicts are allow, require_approval, and deny (the UI shows them as Allow, Require approval, Deny). This is the shipped Gmail template:

# policy.yaml - gmail integration
version: 1
integration: gmail
default: deny
tools:
  list_messages: allow
  search_messages: allow
  get_message: allow
  send_message: require_approval
  delete_message: require_approval

Tool names are the integration’s own - Gmail uses snake_case (send_message), Outlook uses kebab-case (send-mail). LaunchZero validates every entry against the integration’s real tool list, so a typo is rejected rather than silently ignored, and anything not listed falls through to default (deny). A few tools - such as LaunchZero’s own bridge tools - are locked to deny and can’t be opened up.

Network and workspace access

“Network restricted” isn’t a policy.yaml rule - it is a separate host allowlist. LaunchZero-governed network tools can reach only allowed hosts. Model-provider traffic and disclosed direct capabilities are outside this allowlist. A workspace-folder allowlist sets which folders monitored file tools may read and write. Both are managed in the dashboard under Settings → Network & Workspace.

Next steps

  • Security model - the trust domains and threat model the policy engine runs inside.
  • Configuration - where LaunchZero keeps these files, and what advanced users can inspect.

Something unclear or missing? Read the full security model or contact the SRG team.

Ready to run your agent behind the gateway?

Local-first, on Windows, macOS, and Linux.