Skip to content

GitHub Action

The PassBox GitHub Action injects secrets from your vault into your CI/CD pipeline as environment variables. All secrets are masked in logs automatically.

Terminal window
passbox token create --name "github-actions" --permissions read

Go to your repo’s Settings > Secrets and variables > Actions and add:

  • Name: PASSBOX_TOKEN
  • Value: pb_your_service_token
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Inject secrets
uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
environment: production
- name: Deploy
run: |
echo "Deploying with secrets..."
# DATABASE_URL, API_KEY, etc. are now in $GITHUB_ENV
npm run deploy
InputRequiredDefaultDescription
tokenYesPassBox service token (pb_...)
vaultNoVault name or ID (uses default if omitted)
environmentNoEnvironment name (e.g., production)
secretsNoSpecific secrets (comma-separated). Injects all if omitted.
export-envNotrueExport secrets as environment variables
env-fileNoWrite secrets to a .env file at this path
serverNohttps://api.passbox.devPassBox server URL
- uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
environment: production
- uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
secrets: DATABASE_URL,API_KEY,REDIS_URL
- uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
environment: production
export-env: 'false'
env-file: .env.production
jobs:
deploy-staging:
runs-on: ubuntu-latest
steps:
- uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
environment: staging
deploy-production:
runs-on: ubuntu-latest
needs: deploy-staging
steps:
- uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
environment: production
- uses: Paparusi/passbox@main
with:
token: ${{ secrets.PASSBOX_TOKEN }}
vault: my-app
server: https://your-passbox-server.com
  • All secret values are registered with core.setSecret(), so they are masked in logs
  • Secrets are exported via core.exportVariable(), available as $GITHUB_ENV
  • The service token should have read permission only
  • Use GitHub’s environment protection rules for production deployments