For unattended use you don’t want to log a CI runner into a personal account — passwords expire, MFA breaks scripts, and a personal token would have access to all your projects. The platform mints service-account tokens instead: opaque, project-scoped, owner-mintable.Documentation Index
Fetch the complete documentation index at: https://docs.grounds.gg/llms.txt
Use this file to discover all available pages before exploring further.
Format
Permissions
A service-account token can do anything aneditor can do — within the project that minted it. Specifically:
- ✓ Create pushes (
grounds push) - ✓ Retry pushes
- ✓ List, show, pin, unpin previews
- ✓ Read deployment logs
- ✗ Mint another service-account token
- ✗ Revoke a service-account token
- ✗ Add or remove project members
- ✗ Change member roles
owner accounts, which means a leaked token can’t be used to entrench itself. Rotate by minting a new one and revoking the old.
Minting
Minting means creating a new service-account token. The platform generates a fresh secret, stores only its hash, and shows the secret once so you can put it into CI. Only project owners can mint.Portal
- Open the project.
- Settings → Service accounts.
- Click New token, name it (
ci-github-actions,release-bot), pick an expiry. - Copy the secret immediately — you won’t see it again.
CLI (forthcoming)
Using a token
SetGROUNDS_TOKEN and the CLI/Gradle plugin will prefer it over credentials.json:
.github/workflows/push.yml
--project <other-id>, forge ignores it and uses the token’s scoped project.
Listing & revoking
Owners can list active tokens (the secret is never returned, just the prefix and metadata):Expiry
Tokens have a creation timestamp, optional expiry, and alastUsedAt updated on every successful API call. The portal will surface tokens unused for >30 days for cleanup.
Tokens never auto-rotate. The platform doesn’t refresh them or reissue silently. Plan to rotate on a cadence (90d is a sensible default) by minting new + cutting over CI secrets + revoking old.
Audit
Every token mint, use, and revocation is recorded in the project’s audit feed (portal Settings → Audit). Useful when investigating a compromise or wondering “who pushed at 3am yesterday”.What if my token leaks?
- Revoke immediately in the portal. The token stops working on the next API call.
- Mint a new one and update CI secrets.
- Check the audit feed for unexpected pushes between leak and revocation.
