Gatekeepers are the “device drivers” of Cloudflare OS — purpose-built Cloudflare Workers that mediate every interaction between your agents, Gadgets, and the external services you care about. Each gatekeeper handles OAuth authorization, enforces narrow access to only the specific resource a user intended to share, logs every action for later review, and — for operations with side effects — provides a human-in-the-loop approval flow that does not block the agent while it waits.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/cloudflare/cloudflare-os/llms.txt
Use this file to discover all available pages before exploring further.
How a Gatekeeper Works
Each gatekeeper runs as a separate Cloudflare Worker, completely isolated from the workshop backend. The router discovers installed gatekeepers automatically by scanning its ownGATEKEEPER_* service bindings, so installing one is purely a configuration change — no code modifications required.
wrangler.jsonc (router)
The Approval Queue: Asynchronous Human-in-the-Loop
Traditional human-in-the-loop setups block the agent until a person approves each action. Cloudflare OS takes a different approach: write actions are queued, not blocked. When an agent performs an operation that has side effects — creating a GitHub issue, editing a Confluence page, sending a message — the gatekeeper does the following:- Simulates the outcome locally. The gatekeeper tells the agent that the action completed and returns simulated results, including provisional IDs for created resources. The agent continues working.
- Queues the real action. The actual API call is staged but not sent until a human approves it.
- Presents a review UI. The user can approve or reject queued actions in bulk, or one-by-one, whenever it is convenient — not synchronously while the agent is mid-task.
--dangerously-skip-permissions. The agent makes progress; the human stays in control.
Every read still calls
authorizeObservation() so that sharing a Gadget with a collaborator correctly tracks what data they would be exposed to — even before any write is approved.Capability-Based Introductions
By default, agents and Gadgets have access to nothing — even if a gatekeeper is installed and your account is connected. You must introduce each agent or Gadget to the specific resources you want it to use. You can make an introduction by:- Pasting a URL into the chat (e.g., a GitHub repo link or a Confluence page URL)
- Using the Connections UI — clicking + New Connection inside a Gadget or agent workspace and using the resource picker
- Requesting an introduction — an agent can ask for access to a resource it thinks it needs, which you can then grant or deny
Observer Tracking
When you share a Gadget with a collaborator, Cloudflare OS needs to ensure that your collaborator has their own legitimate access to any external resources the Gadget uses — not just inherited access through your credentials. When a collaborator opens a shared Gadget that uses a gatekeeper:- Read-only resources that the collaborator also has access to (e.g., a public GitHub repo, a shared Confluence page) allow the Gadget to open normally.
- Private resources (e.g., Gmail) are always blocked for observers — the gatekeeper is marked private-only and sharing is denied.
- Ambiguous resources (e.g., a Notion page the collaborator may or may not have access to) prompt the collaborator to verify their own access by connecting their own account and completing the OAuth flow for that resource.
Available Gatekeepers
GitHub
Repositories, issues, and pull requests via OAuth App. Supports “Continue with GitHub” sign-in.
Google Docs, Sheets, Calendar, Gmail, and BigQuery. Supports “Continue with Google” sign-in.
Confluence
Atlassian Cloud Confluence pages, spaces, blog posts, comments, and labels. Cloud only.
Slack
Read-only access to Slack channels, DMs, threads, and workspace search via user token.
Notion
Notion pages and databases, with full read/write via public OAuth integration.
MCP
Connect any MCP-compatible server. User-pasted endpoints or admin-configured portal.
Built on Cloudflare Workers Email. No OAuth setup required — provisioned automatically at deploy time.
Home Assistant
Self-hosted Home Assistant instances. Uses a long-lived token; no OAuth flow needed.
Supabase
Project-level OAuth for Supabase databases and edge functions.
ZoomInfo
Enterprise data enrichment. Contact ZoomInfo for credentials before configuring.
Scheduler
Auto-provisioned gatekeeper for persistent workspace callbacks. No setup required.
Cloudflare
Used for “Continue with Cloudflare” sign-in and AI Gateway billing. Not a data connector.
Installing a Gatekeeper
Gatekeepers are discovered by the router at startup by scanning its own service bindings. To install one, add the appropriateGATEKEEPER_* service binding to your router’s wrangler.jsonc:
wrangler.jsonc
Auto-Provisioned Gatekeepers
Two gatekeepers require no user action to set up:- Context Library (
GATEKEEPER_CONTEXT) — automatically provisions a read session and management UI for every user. Administrators can create public context collections that are visible to everyone in the deployment; users can maintain their own private collections. No OAuth credentials to configure. - Scheduler (
GATEKEEPER_SCHEDULER) — automatically provisions a singleton binding that agents use to register persistent workspace callbacks (cron-style scheduled tasks). The account is minted per-user with no OAuth flow.
autoProvisionsAccount: true in their vendor description, which tells the workshop to mint an account for each user automatically. Their mode can be set to enabled (forced on for all users), optional (user opt-in from the Connectors page), or disabled in the deployment admin panel.