Automation & CI
Automation Credentials
Give CI and deployment systems non-interactive, environment-scoped access without copying a human device identity into automation.
Create a credential
Create the credential from an owner device and grant only the environments and roles the job needs:
$ ghostable access create --name github-actions --kind ci --grant staging:reader
$ ghostable access create --name production-deploy --kind deploy --grant production:reader
Kinds are ci, deploy, and access. They label intended use; effective access comes from the environment grants. Automation grants accept only reader or writer.
Store the token
The command returns a credential token and writes its public device and grant records under .ghostable/. The token embeds that automation identity's private keys, is shown only once, cannot be recovered from the committed records, and has no built-in expiration. Store it immediately in the CI or deployment platform's encrypted secret store as GHOSTABLE_CI_TOKEN, then commit the repository changes.
Use the credential
Ghostable automatically loads the token from the environment:
$ export GHOSTABLE_CI_TOKEN="<secret supplied by platform>"
$ ghostable validate --env staging --json
$ ghostable deploy production --dry-run --json
$ $env:GHOSTABLE_CI_TOKEN = "<secret supplied by platform>"
$ ghostable validate --env staging --json
$ ghostable deploy production --dry-run --json
Automation credentials bypass local biometric or user-presence prompts because no user session exists. Their security therefore depends on token storage, runner isolation, and narrow grants.
Scope and permissions
- Use
readerfor validation, tests, process injection, and deployments that only read Ghostable state. - Use
writeronly when the job must commit new encrypted values or metadata. - Create separate credentials for CI and production deployment so either one can be revoked independently.
- Do not grant production to preview or pull-request jobs.
Revoke and replace
Automation credentials appear as devices in access views. Revoke the credential's device ID and commit the signed policy change:
$ ghostable access list --full
$ ghostable access revoke --device-id <credential-device-id> --env all
Revocation permanently disables that automation identity and automatically rotates affected environment keys. Delete the old platform secret, create and store a new credential, commit its public records, and update the job before removing the old secret. If compromise is possible, also rotate any database passwords, API keys, or provider credentials the automation identity could have decrypted; environment-key rotation only protects future Ghostable ciphertext.