Token Handling
How ActionsManager handles GitHub tokens and best practices for keeping credentials secure.
How Tokens Are Used
Section titled “How Tokens Are Used”ActionsManager uses GitHub tokens to:
- Authenticate users (PAT login or OAuth)
- Make GitHub API calls for repository, workflow, pull request, and secrets management
- Validate repository access before performing operations
Token Storage
Section titled “Token Storage”Personal Access Tokens submitted via the login UI are stored encrypted in the ActionsManager database. The raw token value is:
- Never displayed in the UI after initial submission
- Never included in API responses
- Only decrypted when making GitHub API calls
The UI shows only masked token status: Configured, Invalid or expired, Missing required permissions, No repository access, Blocked by organization policy, Not verified (the permission check could not be completed), or Saved but unreadable (the saved token can no longer be decrypted, usually because SECRET_KEY changed; save it again to re-encrypt it).
Credential Resolution Order
Section titled “Credential Resolution Order”For GitHub API operations, ActionsManager resolves credentials in this order:
- The user’s saved PAT (if configured)
- The user’s current OAuth token (if no PAT is saved)
- Authentication error if neither is available
Token Scope and Least Privilege
Section titled “Token Scope and Least Privilege”Always grant the minimum permissions necessary for your use case:
Fine-Grained PAT (Recommended)
Section titled “Fine-Grained PAT (Recommended)”| Permission | Level | Purpose |
|---|---|---|
| Metadata | Read-only | Required for all repository operations |
| Contents | Read and write | Workflow file management |
| Actions | Read and write | Workflow triggering |
| Pull requests | Read and write | PR-based delivery |
| Secrets | Read and write | Only if using secrets management |
| Variables | Read and write | Only if using variables management |
Limit Repository access to only the repositories ActionsManager needs to manage.
Classic PAT
Section titled “Classic PAT”Use only if fine-grained PATs are not available for your use case. Minimum scopes:
repo— private repository accessworkflow— workflow file updatesread:org— organization visibilityuser:email— user validation
Security Best Practices
Section titled “Security Best Practices”- Use fine-grained PATs with expiration dates rather than never-expiring classic PATs
- Limit repository scope on fine-grained PATs to only what ActionsManager needs
- Enter tokens in the UI, not on the Docker command line or in environment files
- Rotate tokens on a regular schedule and immediately if exposure is suspected
- Do not share PATs — each user or deployment should use its own token
- Never commit tokens to source control or paste them in GitHub issues, PRs, or screenshots
What to Do If a Token Is Exposed
Section titled “What to Do If a Token Is Exposed”- Immediately revoke the token in GitHub at Settings → Developer settings → Personal access tokens
- Generate a new token and sign in to ActionsManager with the new token
- Review GitHub audit logs for unauthorized activity
- Check shell history, logs, environment files, and container configurations for additional exposures
OAuth Token Handling
Section titled “OAuth Token Handling”OAuth tokens obtained through GitHub OAuth login are:
- Stored in the session and used for authentication
- Scoped to the user’s GitHub account access
- Not shared with other users
If you configure GitHub OAuth for ActionsManager, the GITHUB_CLIENT_SECRET must be kept confidential and never committed to source control.
Related Topics
Section titled “Related Topics”- GitHub PAT Setup — creating tokens with least privilege
- GitHub OAuth Setup — configuring OAuth login
- Security Policy — hardening guidance
- Privacy — how token data is stored
© 2026 ActionsManager. All rights reserved.