base doctor is the exception, and it is worth running any time the graph feels wrong.
base install
Install base on this machine: build it, put it on your path, create~/.base-gbl/, wire the hooks, and write the manifest.
What the installer wires today. It writes hooks into
~/.claude/settings.json, appends a base section to ~/.claude/CLAUDE.md, and installs the bundled base-help skill into ~/.claude/skills/. That is one agent host. Other hosts are not wired by the installer, and there is no flag that wires them. You would be connecting them by hand. Established from source at 4866996, the commit the shipped 0.13.2 binary was built from.
--skip-hooks leaves base installed as a command-line tool with nothing running automatically. That is the right choice if you want to try the commands before anything starts appearing in your sessions.
Running
base install again is also how you refresh the bundled skill. base update moves the binary and leaves the skill where it was, so after an update the skill on your machine can describe the previous release. See Known issues.base activate
Enter a Skool classroom key to remove attribution.base update
Update the base binary from public GitHub releases, or quiet the banner that tells you to.--check re-validates as well as reporting, so it is the honest answer to “am I current” rather than a cached one.
base uninstall
Take base off this machine: remove the hooks fromsettings.json, remove the binary, and strip the base section out of CLAUDE.md.
base scaffold
Set a directory up as a workspace: create.base/, write the initial configuration files, and register it globally.
no .base/ directory found and the two ways forward, which are scaffolding here or passing -g to target the global tier deliberately. Earlier versions fell back to global silently, and a handoff filed that way resurfaced in every unrelated project forever.
base workspace sync
Regenerate the registered-workspaces block in~/.claude/CLAUDE.md from base.toml.
base.toml is the source of truth for what is registered; this command republishes it. There is no base workspace list. Read base.toml, or run base project list --all.
Operator profile
The operator profile is who you are: the identity block that gets loaded alongside everything else.base operator init
Create the profile at~/.base-gbl/operator.toml.
base operator show
Print the current profile.Configuration
base.toml holds base’s settings, and these three commands read and write it using dot-notation keys.
base config get
base config set
base config list
Secrets
Secrets live in~/.base-gbl/.env with 0600 permissions. Plugins read them from their environment, which is the point: a key set this way never has to be typed into a chat.
base secret set
Prompt for a secret with echo off. The value is masked as you paste it and never printed back.base secret list
List the key names you have stored, with masked values.base secret rm
Destructive, no preview. Remove a stored secret.base doctor
Diagnose graph health across both tiers, and repair or restore it. It exits nonzero when the graph is unhealthy, which makes it usable in a script.
The check itself does not depend on the parser, so it still gives a straight answer about a graph that other commands are choking on. Run bare
--restore first to see what snapshots exist before naming one.
base dashboard
Launch the Command Center, a local web interface over the graph.base dash is the short alias.
Extensions
An extension adds commands to base.base ext is the short alias.
base extension list
base extension validate
Check an extension manifest before you trust it.base extension install
Install an extension from a validated manifest file.
Without
--bundle, the installed manifest points back at wherever the handler currently sits, so moving or deleting that folder breaks the command. With it, the install is self-contained and survives the source repository going away.
base extension add
Fetch a plugin’s prebuilt binary for this machine from its GitHub release, verify the checksum, unpack it and install it. No build toolchain needed.[dist] block for this to work. Where no prebuilt asset matches your machine, it falls back to building from local source.
base extension scaffold
Create a new conformant cross-platform plugin.
The name you pass becomes the command, so
base extension scaffold weather gives you base weather.
base extension run
Run a plugin command explicitly, by name.base extension run weather --city Austin reaches the plugin exactly as you typed it. Use this form when a plugin command’s name collides with something else. It is unambiguous where the bare base weather might not be.
base extension remove
Destructive. Remove an installed extension by name.base hook
Handle one hook event. You do not normally run this yourself: the installer wires it into your agent host’s settings, and it is what fires at session start, on each prompt you send, and around tool calls.base help hook names only three of the five. The binary handles pre-tool-use and stop as well; verified from source at 4866996, where the dispatcher has an arm for each. The help string is out of date, not the command.