Skip to main content
Use --profile <name> on supported commands only when an active Service Account profile already exists in the CLI profile store. The flag selects that profile; it does not import a bundle or create a credential. Service Account credential lifecycle is Web-only. When you have only an active bundle, configure the documented AC_* environment variables instead. Run a command family without a subcommand to display its built-in help. For one copy-ready command example per command, continue to CLI examples.

Identity availability

A human PAT can use every API-backed command below when RBAC permits it. Local commands such as login and generate do not require API authorization. A Service Account can use only:
The CLI rejects every other command before making an SDK or API call. RBAC can still deny a command from this list when the Service Account lacks the required custom-role permission or project access.

Core record commands

generate only returns locally generated fields. new generates, encrypts and stores them. set updates a matching record or creates it when human mode has enough information.

Project commands

Group commands

Human PAT only. All commands require --account; Team+ and RBAC apply. A group is reusable within its account. Creating it does not grant a project role.
update replaces name and description; omitting description clears it. Membership, deletion and grant writes return the server’s change snapshot, including pending material and remaining access sources. Removing one path preserves other authorized paths. Revocations need no vault unlock. reconcile uses the configured local passphrase to attempt encrypted-material repair as an authorized holder; it never grants access. Its attemptedProjectIds are attempts, not proof that recipients can decrypt. Omitting --project attempts readable projects in the account. Pending direct group-record shares in the account are repaired in either mode; unavailable holder material can remain pending. See Groups and effective access. The SDK group catalog exposes available role IDs and member candidates. group list and group members return context groups and current members; they are not catalog/candidate switches.

Record management commands

Project audit scope requires both --scope-type project and --scope-id.

Gateway commands

Discovery and lifecycle:
Gateway tokens:
Settings and credentials:
gateway provider-models includes current official pricing for each discovered model. Numeric token rates use USD per one million tokens; displayText and rateCard preserve provider-published zero and context-tiered policies. Observability:
Provider credentials and OpenTelemetry headers are read from named environment variables. Their values do not belong in command arguments.

Service Account metadata commands

The public CLI does not create, pause, reactivate, delete, provision, rotate or revoke Service Account credentials.

Argument rules

  • Values in angle brackets are required. Values in square brackets are optional.
  • UUID arguments must be complete IDs. Names are not accepted where an ID is required.
  • --account selects account context. It does not add permissions.
  • --project limits an operation to one project.
  • --profile selects a stored Service Account profile for commands that support machine identity.
  • --scope on airctrl read selects record sections: fields, meta, owner, access, or full. It does not select individual field names.
  • Omit --env for a General record. Pass --env development, --env staging, or --env production to select that record value. The PAT or Service Account token must permit the selected scope; access never falls back to General or another value.
  • --target-env on airctrl import env is a field stored inside that ENV-format record. It is separate from --env, which selects the record’s encrypted value.
  • Repeat --field key=value, --model <name>, or --credential-binding <credentialId=modelId> when you need more than one value.
  • --tags none, --secret-due null, and --rotation-days null clear those optional values. A positive integer is required for --rotation-days.
  • --idempotency-key identifies one intended record write. Reuse it only when retrying the same input.
  • Use null only where the command syntax explicitly accepts it. It clears the stored optional value.
  • Use none only where documented. It replaces a list with an empty list.
  • Boolean flags accept only true or false.
Run a command family without a subcommand to see the installed version’s exact syntax:

Output

Normal commands write formatted JSON to stdout. Scripts should read stdout as JSON and use the process exit status to decide whether the operation completed. Diagnostic text and stable error codes go to stderr. Commands that return no resource print { "ok": true }.
One-time values, including newly created gateway tokens, are printed once. Redirect them only into an approved custody process. Do not write them to a shared terminal log.

Complete workflow examples

Create and inspect a project:
Create a record without putting its secret value in command history:
Read metadata, then inject decrypted values only into a child process:
Change safe metadata and review immutable history:
Share a record, then revoke the same grant:
Create a provider credential from an environment variable, then create a gateway:
Create a short-lived gateway token and inspect usage without reading stored bodies:
Read safe Service Account metadata as a human:
Run the supported read-only subset with an active Service Account profile:

OAuth partner Apps

The CLI has no OAuth App profile, authorization-code flow, or connection/protection lifecycle commands. Do not place OAuth client secrets, authorization codes, access tokens, or refresh tokens in its PAT/Service Account profiles or shell history. Those values belong in a confidential partner backend. Implement OAuth partner flows through the standards-based direct HTTP contract or OAuthPartnerClient. See OAuth partner integrations, OAuth protocol, and OAuth protection API. The CLI may still manage ordinary gateways with a separately authorized human PAT; that is not the OAuth installation identity.

CLI failures

The CLI never treats an incomplete Service Account profile as a human login. Fix the profile instead of adding a human PAT to the same machine configuration.