Getting Started
From zero to a working beekeeper check in a few minutes.
Beekeeper is threat intelligence for autonomous coding agents. It
intercepts an agent's tool calls before they execute and evaluates them
against unified threat intelligence: blocking malicious package installs,
sensitive-path reads, and off-task actions. This guide takes you from nothing to
a working beekeeper check.
Prerequisites
- Go 1.25 or newer (Beekeeper installs via
go install) - A supported OS: Linux, macOS, or Windows
- An agent harness to protect. This guide uses Claude Code, the one harness Beekeeper is live-verified against (see the caveat at the end)
1. Install
Install the latest release with a single command:
go install github.com/home-beekeeper/beekeeper/cmd/beekeeper@latestThis produces a single static binary on your PATH with no separate runtime to
install. See Installation for signed pre-built binaries
and cosign / SLSA verification.
2. Initialize
beekeeper initbeekeeper init creates the Beekeeper state directory (~/.beekeeper/ on
Linux/macOS, %APPDATA%\beekeeper\ on Windows) and detects installed editors so
it can offer to disable risky extension auto-update and register watch
directories. For a scripted, non-interactive install:
# --yes auto-consents to all prompts; --no-editors skips editor detection
beekeeper init --yes --no-editors3. Sync the threat catalog
beekeeper catalogs syncThis fetches the threat-intel catalogs and builds the on-disk mmap index that
beekeeper check reads on every call. Run this before your first check:
without an index the engine has nothing to corroborate against.
To keep catalogs fresh without re-running sync by hand, install the background sync
daemon: an unprivileged per-user schedule that refreshes on an interval (default
2h, configurable). See Configuration for the catalog_sync
block.
beekeeper catalogs daemon installWhere the threat intel comes from. Beekeeper's threat intelligence is inspired by Perplexity's Bumblebee project.
catalogs syncfetches Bumblebee'sthreat_intelfeed over the GitHub API and caches it locally. Here Bumblebee is a catalog source (plain data over HTTP), not a binary Beekeeper runs, so it behaves identically on every OS.Separately, the optional
beekeeper scaninventory shells out to a scanner binary on yourPATH. It prefers bumblebee (the upstream tool, and the recommended scanner on macOS and Linux) and falls back to pollen (a Windows-focused fork of Bumblebee) when bumblebee is not found. On Windows that fallback is what runs, because Bumblebee has no native Windows build yet: Pollen is a Windows-only stopgap until upstream ships Windows support. Either way the catalog arrives over HTTP and the scanner runs natively, so no platform is locked out of Beekeeper's threat intelligence.
4. Install the hook for your harness
beekeeper hooks install --target claude-codeThis registers Beekeeper as a PreToolUse (and PostToolUse) hook in Claude
Code's configuration, merging into any existing hooks without clobbering them.
The flag is --target <harness>, not --hook (that flag belongs to
beekeeper check).
Installing the hook is an explicit "protect this machine" action, so on first
install Beekeeper enables supply-chain enforcement: it sets nudge.mode=block
in your config, which denies npm / yarn installs and steers the agent toward
pnpm or bun. To opt down to advisory-only, run
beekeeper config set nudge.mode soft. See Configuration.
5. Verify it works
beekeeper check reads a tool-call JSON object from stdin and decides
whether to allow, warn, or block it. Pipe a credential-read attempt in to see a
block:
echo '{"tool_name":"Bash","tool_input":{"command":"cat ~/.ssh/id_rsa"}}' \
| beekeeper check --hook claude-codeWith --hook <harness>, a blocked call exits 2, writes the human-readable
reason to stderr, and emits the harness-specific deny JSON to stdout. An allowed
call exits 0. Input is always read from stdin.
What to expect
Every decision (allow, warn, or block) is recorded in the audit log at
~/.beekeeper/audit/beekeeper.ndjson. Inspect it any time:
beekeeper audit tail --no-followSee the Audit Log docs for querying and exporting, and Security for how block decisions are made (the corroboration model) and what Beekeeper does not defend against.
A note on harness coverage
Only Claude Code is live-verified. On the development machine, Beekeeper was confirmed end-to-end: the hook fires, the credential-read tool call is blocked (the tool does not run), and the block is written to the audit log. The other 16 supported harnesses are implemented against their published contracts and validated by contract-shape tests, but those tests do not run a real harness, so whether a given harness honors the contract in a live session is not verified in CI. See Integration for the full per-harness breakdown and the caveats for each tier.