install
Run capa install after you edit capabilities.yaml / .json. capa installs skills, MCP client config, rules, hooks, agents blocks, and plugins for your providers, then wires the local server.
Synopsis
Section titled “Synopsis”capa install [-e [file]] [-p <provider>] [--no-cache] [--passthrough] [--dry-run] [-y]| Flag | Description |
|---|---|
-e, --env [file] | Load variables from a .env file instead of the credential web UI. Omitting the path uses .env in the project directory |
-p, --provider <id> | Install for a single provider (e.g. cursor, claude-code). Overrides providers in the file |
--no-cache | Bypass the on-disk cache and lockfile; re-resolve every remote source |
--passthrough | Write provider-native files from the capabilities file (no capa server/proxy management) |
--dry-run | Print the executable surface and exit without installing |
-y, --yes | Skip the executable-surface confirmation (required in non-interactive / CI environments) |
Executable surface confirmation
Section titled “Executable surface confirmation”Before installing (managed or --passthrough), capa lists everything the install can execute on your machine:
- MCP stdio servers (command and arguments)
- MCP secret commands (
fromCommandenv / header values) - Hooks
- Tool formatters
- Command tools
- Plugins
capa then asks you to confirm. Your answer is remembered per project: later installs only prompt again when that surface changes (for example, a new stdio server or an edited hook command). Unchanged surfaces install without a prompt.
capa install --dry-run # review the surface, change nothingcapa install --yes # accept the surface without promptingInstall errors
Section titled “Install errors”By default, operational errors warn instead of aborting: a missing required CLI (options.requiresCommands), a skill or rule that fails to fetch, a plugin that fails to resolve, hook install failures, tool validation errors, or an unsafe install path. capa installs everything that succeeds, prints the warnings and a summary, and exits 0.
To abort on the first failure and exit non-zero (useful in CI), set onInstallError under options:
options: onInstallError: stop # warn (default) | stopSafety checks
Section titled “Safety checks”capa install refuses to write where it does not own the path:
- Project root containment: every provider install path (skills, rules, MCP config, hooks, sub-agents, instruction files, plugin manifests) must resolve inside the project. Path traversal and, on Windows, writes to a different drive are refused.
- No symlink escapes: capa refuses to write through a symlink or junction anywhere along the install path (for example
.cursor/skills → ../skills). - Wrap workspaces:
capa installrefuses to run inside a wrap workspace or register a path under~/.capa/workspacesas a project. - Remote URLs: remote rule, hook, and agent-snippet URLs must be public
httpsURLs. URLs with embedded credentials, and hosts that are (or resolve to) loopback, private, link-local, or cloud-metadata addresses, are rejected. - Pinned hook bodies: remote hook bodies are hashed in
capabilities.lock. If upstream content changes under the same pin, install reportscontent changed upstreaminstead of installing it. Re-resolve deliberately with--no-cache. See Lockfile and cache.
After a managed install, every MCP server declared in the capabilities file is enabled on the capa server: you don’t need to toggle them on in the Web UI.
Provider resolution
Section titled “Provider resolution”When providers is omitted from the capabilities file, capa picks a provider in this order:
--providerflagprovidersin the capabilities file- Stored providers from a previous install
- Interactive prompt (TTY only)
Examples
Section titled “Examples”capa installcapa install -ecapa install -e .prod.envcapa install -p cursorcapa install --no-cachecapa install --passthrough -p cursorcapa install --dry-runcapa install -p cursor --yes # CIWith secrets in .env:
echo "BraveApiKey=your-api-key" > .envcapa install -e