# Headless / CI usage For unattended clients (CI, cron, Claude Code), authenticate with a Personal Access Token (PAT) rather than an interactive session. ## Create a PAT **Via UI:** sign in, open `/tokens`, create a token. Copy the raw value — it is shown exactly once. **Via CLI (requires an interactive session):** ```bash agnes auth token create --name "github-actions" --ttl 365d --raw ``` The `--raw` flag prints only the token, suitable for piping into a secret store. ## Use the PAT Set the `AGNES_TOKEN` env var: ```bash export AGNES_TOKEN= agnes query "SELECT 1" ``` ### GitHub Actions example ```yaml - name: Sync data env: AGNES_TOKEN: ${{ secrets.AGNES_TOKEN }} AGNES_SERVER: https://agnes.example.com run: | uv tool install "$AGNES_SERVER/cli/wheel/agnes.whl" agnes pull ``` ## Revoke ```bash agnes auth token list agnes auth token revoke ``` Or from `/tokens` → Revoke.