@checkfu/ui component in Checkfu’s dashboard and
in your own application.
Your backend needs a Checkfu API key and Workspace. The browser does not.
List what this Principal can connect
- Checkfu-owned package name, revision, digest, and review tier;
- minimum scopes and exact reviewed egress destinations;
- normalized tool count and qualification expiry;
- connection flow: managed or protocol OAuth, hosted credential entry, no credential step, or Integration Bridge pairing;
- opaque hosted, dedicated, or customer-Bridge placement choices and their availability; and
- the Principal’s account lifecycle, health, and optimistic version.
curated, structural, and unreviewed are facts
for the person deciding what to connect, not reasons to silently hide a row.
An unavailable row or placement carries a closed reason such as
qualification_expired or not_paired.
The projection never contains a provider credential, supplier tenant id,
account handle, adapter key, Bridge handle, or provider authorization URL.
Render the shared Connect Center
Use the statefulConnectCenterAdapter, not a second application-specific
connection state machine. Give it the signed-in Principal id and narrow
browser-to-BFF transport functions; your BFF maps those functions to
createConnectCenterController while retaining the Checkfu Workspace key.
The credential broker example
is the complete forkable transport and server implementation.
ConnectCenterTransport type is the BFF contract. It includes listing,
begin/reconnect/revoke, read/observe/replay of one session, source detection,
credential-free account detail, access plan/apply, and revocation impact. Each
function accepts already-scoped ids and returns the public SDK projection; it
must never return your Checkfu key, a provider credential, or a supplier URL.
The adapter owns search, account labels, minimum-scope display, stable retry
keys, one secret-free active-session locator per Principal, reload recovery,
bounded observation, tool/agent selection, and inventory refresh. Its default
storage is the current tab’s sessionStorage, so a pending ceremony can resume
after reload without sharing recovery state across tabs. It owns no API key,
provider credential, supplier coordinate, or durable Checkfu authority.
Begin setup
Choose one exact offering and one available opaque placement. Keep one idempotency key for the logical attempt until the server responds; reusing it after an ambiguous timeout prevents a duplicate Connection.ProviderPackage and enforces its credential flow, minimum and allowed scopes,
and egress ceiling. The browser never asserts those binding facts, and
caller-authored settings cannot bypass a missing or ambiguous package.
The result owns one durable ConnectionSession and may carry a short-lived
Checkfu-origin nextAction:
Observe or replay the exact session
ConnectionSession is the durable cursor. Observe it instead of searching a
environment-wide account list by label:
connected, revoked, failed, expired, or canceled; it never returns
a provider response or credential. There is no Connection-lifecycle webhook
today, so this helper uses bounded public polling.
If a live human action was lost, replay that exact session under another
caller-owned retry key. Replay cannot create a Connection or broaden scope,
egress, package, placement, or provider authority.
Detect a remote MCP or API source
Detection is credential-free and informative. It never publishes, enables, or connects a source.qualification_required. Network, document,
size, and protocol failures are closed reasons rather than guessed defaults.
Pair a private environment
Use Integration Bridge when the tool is a private HTTP API, a local CLI, or a stdio MCP server that Checkfu’s hosted plane cannot reach. Operate one Bridge per customer environment or trust zone—not per agent, Principal, Connection, or end user. Ordinary remote integrations use Checkfu’s shared regional plane; dedicated hosted cells are exceptions for explicit compliance, residency, or private-network requirements. An administrator creates the Workspace-owned placement and receives its short-lived, one-use pairing code only in that create response:checkfu-integration-bridge.mjs artifact on a Node.js 22
machine that can reach the local targets. The local mode-0600 config contains
only Checkfu’s qualification-generated manifests plus fixed local target
coordinates and credentials. Pair and verify it before starting the service:
offline and omits
it from new placement choices without deleting already queued signed work. A
later valid claim projects it as active again.
List Bridge presence without credentials or routing handles through
checkfu.integrationGateway.bridges.list(). Revocation invalidates the exact
machine credential locally before it returns:
Choose tools and agent access
A connected account is still inert. Load its credential-free detail, review the selected tools and agents, then plan before applying:installation_required, publish_required, or ready. “All current agents”
is an explicit reconciled set, never ambient authority for future agents.
During a Run, the harness calls the exact connection_id:tool_name through
CapabilityGateway. Checkfu rechecks PermissionAssignments, ActionPolicy and approval, Connection health
and revision, package/binding digest, exact egress, budget, and invocation
idempotency before credentials are injected server-side.
Reconnect and revoke
Reconnect reserves a distinct immutable successor revision. The predecessor remains the admitted revision until the successor completes.revoked with cleanup_pending: true.
New ToolInvocations are denied throughout asynchronous supplier cleanup.
Drive the same lifecycle from the CLI
The private-alpha CLI composes the same generated operations; it has no supplier-specific connector command or separate state. Start with the Principal-scoped offering wall:0600 file before it sends the request, writes the complete
human-completion receipt there, and prints only the secret-free session
summary:
next_action.url from that protected file outside model context. Retain
the returned cns_... identity for passive reads, explicit runtime
reconciliation, or a lost-handoff replay:
refresh means reconcile that durable ConnectionSession; it is not a
capability-snapshot refresh. Read an Integration Gateway account’s
credential-free health and drift from the Connection projection. Do not route
it through the legacy custody health mutation:
--agent and --tool
flags are explicit selections; use --no-agents or --no-tools when an empty
set is intentional. Omitting --tool selects every currently discovered tool.
Ownership modes
Workspace / service
Use a service Principal for one shared account. Its blast radius is every
explicitly authorized agent acting through that Principal.
Personal / delegated
Map each application user to an end-user Principal. The Principal-scoped
offering read and session routes keep divergent accounts at one provider
separate.