Get started free
Drive agents

Capabilities

How an agent gets reach: the tools it can run, the systems it can query, the machines it can operate — each added in a click, with the credential stored in your sandbox and never in your repo.

On this page (7 sections)

A fresh sandbox can read and write your code. It cannot yet look at your error tracker, query your database, open a pull request, or deploy anything. Capabilities are how you close that gap, one connection at a time, on the Capabilities page.

What you're actually adding

Four shapes, and which one a card uses is a detail of that integration rather than a choice you make:

ShapeWhat it means
A command-line tool The agent gets the CLI on its PATH and your credential in its environment. This is most connectors — GitHub, a database, Sentry.
An MCP server Its tools appear to the agent directly, named after the connection. Point it at any MCP server, hosted or your own.
A logged-in browser For a platform whose API can't cover "all the actions". You sign in once, out of band; the profile persists and the agent drives that browser already signed in.
A machine A server over SSH, a private network over VPN, or one of your own computers dialling in. One capability is one machine, and its id is the name the agent addresses it by.

The catalog

The "+" grid is grouped by what a connection is for, not by how it works:

SectionHolds
Code & issues Repos, issues and pipelines as agent tools — GitHub, GitLab, Redmine.
Observability Query errors, traces, logs and metrics — Sentry, SigNoz.
Data Let the agent query your SQL databases — Postgres, MySQL.
Communication Let the agent read and send messages — Discord, Slack, Telegram, WhatsApp, email.
Business & docs Payments and knowledge bases — Stripe, Outline, npm.
Your computers Let the agent work on a machine of your own: run commands, handle files, see the screen.
Servers Remote machines over SSH, and private networks over VPN.
Deploy & infra Drive container deployments — Docker, Komodo.
Platform Scaffold managed repos that appear as their own operator panels.
Extend Any MCP server, any Claude Code plugin, any model endpoint, any extension.

Most connector cards come from installed extensions rather than being baked into the app, which is why the grid grows without an update — and why you can add your own. See contributes.capabilities.

Adding one

Pick a card and you get two things side by side: a guide and a form. The guide is the part that usually costs the time — where to create the credential, which scopes it needs, and a deep link straight to the right settings page (at the provider, or at your own instance if you're self-hosting one). The form is the fields that connection needs, with secrets masked.

Saving applies it, and you watch it happen: provisioning runs as a real terminal job with its output on screen, rather than a spinner that either turns green or doesn't. The card then reports one of four states — active, pending, error or inactive — re-probed live, so "connected" means the daemon just checked, not that it worked once.

Some capabilities need something installed in the sandbox image — the browser one needs Chromium. Those bake a fragment into your environment overlay and sit pending until you approve the rebuild, because changing what the container contains is your call, not the extension's.

What the agent receives

Two things, both of them boring on purpose: an environment, and a cheatsheet.

The agent's shell
# Two Postgres connections, added as "analytics" and "billing".
POSTGRES_URL_ANALYTICS=postgres://…
POSTGRES_URL_BILLING=postgres://…

# The agent never guesses these: each connection's own skill file names its exact variables.

Every variable is suffixed with the connection's own id, so a second connection of the same kind never collides with the first. That is what makes two databases, or a work GitHub and a personal one, a normal setup rather than a conflict.

In the workspace
.claude/skills/
├── analytics/SKILL.md     # how to query THIS database, with its variable names
├── github/SKILL.md        # the gh CLI, scoped to the token you gave it
└── ssh/SKILL.md           # every connected machine, in one cheatsheet

Each connection also writes a skill file the agent loads automatically: what the tool is, how to drive it, and the exact variable names this connection uses. So the agent doesn't guess at credentials or invent flags — the thing that otherwise turns a connected tool into three wasted turns.

Where the credentials live

In your sandbox, in a file the agent is specifically not allowed to read. The manifest of active capabilities sits in your workspace's control-plane directory and is on the daemon's secret denylist, so the generic file routes answer "not found" for it — an agent cannot read its own credential store out through the file API, and neither can an extension.

Nothing goes to the intentic platform. The platform holds your identity and your sandbox's address; every credential here is one your sandbox stores and your sandbox uses.

Plain environment secrets that aren't tied to a card — an API key your own code needs — go on Sandbox → Secrets instead. That page also has an inventory view that aggregates every store, showing keys and where they came from, never values.

Living with them

  • Re-adding edits. Adding a connection under an id that already exists updates it in place rather than making a second one.
  • Removing tears down. The credential, the environment variables and the skill file all go.
  • One bad entry costs only itself. If a stored connection can't be read — a hand-edit, a format that moved — it is skipped and reported by name, never rewritten away, and every other capability keeps working.

Next

Type to search every page of the docs.