Operations
Secrets and access limits
Squasher stores only a SHA-256 hash of each key.apiKeys.create returns the full key once, in the
create response. apiKeys.list and apiKeys.get return only key_prefix, the first characters
of the key, so you can match a key to where it is used. Nobody can read the full key again. If you
lose a key, create a new one and revoke the old one. A revoked key stops working within a minute.
Only an ingest-only key (scope events:ingest) is safe to put in browser or mobile code. Keep every
other key secret.
A caller cannot give a key more access than the caller has:
- An API key can create, change, or revoke only keys whose scopes it holds itself. For example, a
key with
writecannot create a key with*, and only a key with the exactremote_access:*scope can pass that scope on. - A signed-in user of the CLI or MCP must be an owner, admin, or security admin, as in the dashboard. Only owners and admins can grant the remote-access administration scopes.
apiKeys.create can return a secret that is shown once. Never log it, paste it into public artifacts, or include it in agent transcripts beyond the minimum private handoff the operator requested.
The dashboard hides a new key by default, including from page text read by agents. Select
Copy key to copy it without showing it, or Reveal key to read it. Select
Hide key to hide it again. The Setup page uses the same controls for an ingest key.
Raw AI dataset export is intentionally separate from ordinary read access. Add
the exact ai:export scope when a key needs to call
agentObservations.export; read, write, and errors:read do not imply it.
The * scope grants general API permissions, but it does not grant sensitive
remote_access:* permissions. Add each required remote-access scope explicitly.
Remote-access actions use separate scopes. The broad read scope does not include remote access: every remote-access call with an API key needs the exact remote_access:* scope. An agent key needs the exact remote_access:request scope to preview, create, inspect, or cancel its owned requests. A key must have the exact remote_access:manage scope for administration. Do not put management scope on an agent key. Approval decisions, signing-key fingerprint reveal, target confirmation, and transcript reveal are protected human workflows. Do not use an API key for them.
Scopes for findings, investigations, releases, services, analytics, and providers follow the
usual rules: read includes every :read scope, and write includes every :read and :write
scope. actions:approve lets a caller approve a proposed remediation. read and write do not
include it. Add it explicitly, and only to a key that a person controls.
Revenue scopes are also outside the shortcuts: read and write do not include revenue:read
or revenue:write. Add them explicitly to a key that needs revenue. In the dashboard, only
owners and admins can see revenue.
CLI and MCP
Usesquasher api-keys to list, create, change, and revoke keys. Creating a key, replacing its
scopes, and revoking it ask for confirmation; pass --yes in scripts. The new key’s secret is
printed once.
search("apiKeys") will return runnable operations.