Overview
c1i interacts with the C1 API to manage users, apps, accounts, entitlements, tasks, and access requests. Usage:Global flags
Docs
Explore C1 API documentation and schemas. These commands do not require authentication. Usage:search
Search C1 documentation by keyword.
Usage:
page
Fetch a full documentation page by path.
Usage:
endpoints
List all available API endpoints. Optionally filter by a pattern.
Usage:
endpoint
Show the full request and response schema for a specific API endpoint.
Usage:
openapi
Dump the raw OpenAPI spec in YAML format.
Usage:
skill
Export a self-contained skill file that teaches AI coding agents how to use c1i. The output covers all commands, output formats, API discovery workflows, and common endpoints.
Usage:
Examples:
Auth
Manage authentication credentials. Usage:login
Authenticate to C1. Opens a browser for OAuth device flow authorization, or accepts credentials directly.
Usage:
Examples:
C1I_CLIENT_ID and C1I_CLIENT_SECRET (alongside C1I_URL) as environment variables. Both must be set; partial values are ignored. See Credential storage for the full precedence order.
logout
Remove stored c1i credentials for the current URL from both the OS keyring and the file fallback. Environment variables (C1I_CLIENT_ID, C1I_CLIENT_SECRET) are not affected.
Usage:
status
Check whether valid C1 credentials are stored and working. Reports which source (environment, keyring, or file) served the active credentials.
Usage:
whoami
Show the authenticated principal — user ID, display name, email, and counts of roles, permissions, and tenant feature flags. Useful for agents and scripts that need to confirm identity before making other API calls.
Usage:
By default,
whoami returns a compact summary. Use --verbose when you need the full role and permission lists.
token
Mint and print a short-lived OAuth2 bearer token from your stored credentials, for driving raw API calls yourself (for example, with curl). A new token is minted on each invocation — it is not written to disk.
Usage:
By default only the access token is printed (newline-terminated), so it composes directly into another command:
Credential storage
c1i reads credentials from the first source that has them, in this order:- Environment variables —
C1I_CLIENT_IDandC1I_CLIENT_SECRET(combined withC1I_URL). Both must be set. Used for non-interactive scripts, CI, and containers. Never written to disk. - OS keyring — Keychain (macOS), Credential Manager (Windows), or Secret Service (Linux). Default when available.
- File fallback — a
0600JSON file under your config directory:- Linux:
~/.config/c1i/credentials/ - macOS:
~/Library/Application Support/c1i/credentials/ - Windows:
%AppData%\c1i\credentials\
- Linux:
c1i auth login writes to the keyring when it can and to the file otherwise; c1i auth status reports the active source.
Users
Manage C1 users.list
Search and list C1 users. Outputs NDJSON.
Usage:
Example:
Apps
Manage applications.list
List applications. Outputs NDJSON.
Usage:
create
Create a new app — a plain, unmanaged container you can register MCP servers under. Only --display-name is required; app owners are managed separately via set-owners, not at create time.
Usage:
The created app is returned as pretty JSON under an
app key.
Example:
delete
Soft-delete an app by ID. The app is marked deleted and drops out of normal listings, but the record is retained for audit.
Usage:
set-owners
Set the complete list of owners for an app, replacing any existing owners.
Usage:
Owner changes are provisioned asynchronously — this command returns as soon as the request is accepted, but the new owners can take up to a few minutes to actually appear. Pass
--wait to block until they do.
Example:
Accounts
Manage application accounts (app users).list
Search and list accounts for an application. Outputs NDJSON.
Usage:
set-owner
Set the owner of an application account.
Usage:
Entitlements
Manage application entitlements.list
Search and list application entitlements. Outputs NDJSON.
Usage:
Tasks
Manage access request tasks. Usage:list
Search and list access request tasks. Outputs NDJSON.
Usage:
approve
Approve an access request task.
Usage:
deny
Deny an access request task.
Usage:
comment
Add a comment to a task.
Usage:
Requests
Create access requests. Usage:create grant
Create a grant access request.
Usage:
create revoke
Create a revoke access request.
Usage:
Connectors
Manage connectors.list
List connectors for an application. Outputs NDJSON.
Usage:
Policies
Manage policies — the objects that describe how C1 processes a task (an access request, a certification, a provisioning action): who approves it, what happens on escalation or timeout, and how the underlying resource gets provisioned. Usage:
A policy’s shape is deeply nested:
policySteps holds an ordered list of steps, each one of several types (approval, accept, reject, wait, form), and an approval step’s approver is itself one of several kinds (users, manager, group, app owners, self, entitlement owners, expression, webhook, resource owners, agent). Modeling all of that as flags would be unusable, so create and update take the nested pieces from a JSON file (or - for stdin), while flat top-level fields (display name, description, policy type) stay as flags.
list
List every policy in the tenant, auto-paginating through the full result. Outputs NDJSON.
Unlike most list commands, this takes no query filter at all — only pagination. Use search for filtering.
Usage:
search
Search policies by a fuzzy query (display name + description), an exact display-name match, one or more policy types, or include soft-deleted policies. Outputs NDJSON.
Usage:
get
Get a single policy by ID.
Usage:
list and the default search, get returns a soft-deleted policy too (with deletedAt populated) rather than filtering it out.
create
Create a new policy.
Usage:
The created policy is returned as pretty JSON.
update
Update a policy.
Usage:
Only the fields you pass are changed — this is a partial update, not a full replacement (unless you use
--body-file).
delete
Soft-delete a policy by ID. The row is retained with deletedAt set — this is not a hard delete, and the policy still returns from get afterward.
Usage:
validate-cel
Check a CEL expression for compile errors, without creating or updating anything. Useful for testing a rule’s condition before using it in create or update.
Usage:
0 for a valid condition, 2 for an invalid one — so c1i policies validate-cel '<cond>' && ... only continues past a condition that compiles.
This validates the CEL environment rules run in (
subject, account, entitlement, task) — not the same environment an approval step’s expression approver runs in. An expression that’s valid in one may not compile in the other.MCP gateway
Call the C1 MCP gateway directly over its MCP transport — the same handshake an MCP host performs — to verify what a registered server actually exposes. This closes the configure-then-verify loop: register a server, approve its tools, then list or call them here.This covers only the
gateway subcommand. c1i mcp also has servers, tools, toolsets, and bindings subcommands for managing the MCP surface itself; those aren’t covered on this page yet.
Authentication uses your stored c1i credentials — the standard API token is accepted by the gateway, so no extra setup is needed.
list-tools
Run the MCP handshake against the gateway and list the tools it exposes to you. Outputs NDJSON: one row per tool (name, description).
Usage:
call
Invoke a tool exposed by the gateway and print its raw MCP result.
Usage:
Find tool names and their input schemas with
c1i mcp gateway list-tools --full.
Example:
API
Make raw C1 API requests. This is an escape hatch for accessing any API endpoint not covered by the built-in commands. Usage:
Examples:
/search/* path with no --body), c1i prints a one-line hint suggesting --body or --method=POST so you can recover without consulting the schema.
Pagination and limits
c1i list commands (andc1i api --paginate) auto-paginate by default — they keep fetching pages until the cursor is empty, so you don’t have to manage tokens manually.
Three flags control how much data flows:
Examples:
c1i api --path X --limit N without --paginate errors immediately — the non-paginated path returns a single response, so there’s nothing to cap.
Version
Print the c1i version. Usage:c1i --version.
Completion
Generate a shell completion script. Output is the script itself, which you can write to a file orsource directly. Supported shells are bash, zsh, fish, and PowerShell.
Usage:
c1i completion <shell> --help.