Skip to content

Connections

A connection is a saved, reusable credential for one app on your account. Any number of nodes, triggers, and integration actions use the same connection; you connect an app once, not per workflow.

Terminal window
cai connection list --integration slack
cai connection connect slack --wait

connect opens your browser and returns the moment you finish there (--wait); on timeout it prints a still-valid link. The browser handoff is the point, not a convenience: provider credentials never enter the terminal or a coding agent’s context. In the app, connections are made from the Connections page or inline from a node’s connection selector.

Under the hood, apps connect however the provider requires — OAuth, API key, basic auth, client + secret, custom forms, or a managed popup flow for catalog integrations. The CLI and UI route you to the right one; OAuth tokens refresh automatically when used.

One thing you never connect: AI providers. OpenAI, Claude, and Gemini are served through platform system connections — no vendor key, nothing to set up (AI nodes).

Your first connection for an app becomes its default; you can change that later. The default is auto-assigned when a node for that app lands on the canvas — most of the time you never pick a connection manually. Multiple accounts per app are fine (work + personal Slack); nodes and actions can each be pointed at a specific connection.

A connection is active or errored (revoked, expired beyond refresh, or changed on the provider side). When one breaks: create a new connection for the app and point the affected nodes at it — reconnecting in place isn’t a thing. Nodes with no connection assigned say “Please select a connection”; that’s assignment, not breakage.

After swapping a node’s connection, re-resolve its connection-scoped options — the invalidation rule.

Connections belong to you, not to a workspace or organization. The boundary that matters operationally: when your agent is shared with the organization, teammates’ conversations run its integration actions on your connections (sharing). Rebinding or revoking a connection that a live agent’s action uses takes effect immediately — it is a live binding.

List my connections and every node or agent action bound to each, then flag the ones a shared agent depends on.