bufbuild/Buf Action
Run build, lint, format, and breaking change checks on Protobuf files, and publish schemas to the Buf Schema Registry.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jul 8, 2026
- License
- Apache 2.0
Pinned Snippet
uses: bufbuild/buf-action@fd21066df7214747548607aaa45548ba2b9bc1ff # v1.4.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| version | Version of the Buf CLI to use. Example: with: version: 1.50.1 | no | — |
| checksum | Checksum of the Buf CLI to verify (sha256). | no | — |
| token | API token for logging into the BSR. | no | — |
| domain | Domain for logging into the BSR, enterprise only. | no | buf.build |
| github_actor | GitHub actor for API requests. | no | ${{ github.actor }} |
| github_token | GitHub token for the GitHub instance this action is running on. | no | ${{ github.token }} |
| public_github_token | GitHub token for github.com. Must be set when running on a private GitHub Enterprise instance to authenticate requests, otherwise ignored. Used to resolve buf versions and download buf binaries from github.com. The token only needs read access to public repositories. | — | — |
| setup_only | Setup only the buf environment, optionally logging into the BSR, but without executing other commands. | no | false |
| pr_comment | Comment on the pull request with the results of each step. The workflow and job name combination must be unique. Only runs on pull requests, for non forked repositories. | no | ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository }} |
| input | Input for the buf command. | no | — |
| paths | Limit to specific files or directories (separated by newlines). Example: with: paths: | proto/a/a.proto proto/a | no | — |
| exclude_paths | Exclude specific files or directories (separated by newlines). Example: with: exclude_paths: | proto/a/a.proto proto/a | no | — |
| exclude_imports | Exclude files imported by the target modules. | no | false |
| lint | Whether to run the linting step. Runs by default on pull requests. | no | ${{ github.event_name == 'pull_request' }} |
| format | Whether to run the formatting step. Runs by default on pull requests. | no | ${{ github.event_name == 'pull_request' }} |
| breaking | Whether to run the breaking change detection step. Runs by default on pull requests if the "buf skip breaking" label is not applied. | no | ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'buf skip breaking') }} |
| breaking_against | Input to compare against for breaking change detection. Defaults to the base branch of the pull request or the commit before the push. | no | — |
| breaking_against_registry | Whether to use the Buf Schema Registry for breaking change detection. If true, the `breaking_against` parameter is ignored. Defaults to false. | no | false |
| push | Whether to run the push step. Runs by default on pushes, for non forked repositories. | no | ${{ github.event_name == 'push' }} |
| push_create_visibility | Repository's visibility setting if created. Must be either "public" or "private". Defaults to private. | no | — |
| push_disable_create | Disables repository creation if it does not exist. Defaults to false. | no | false |
| archive | Whether to run the archive step. Runs by default on deletes, for non forked repositories. | no | ${{ github.event_name == 'delete' }} |
Outputs
| name | description |
|---|---|
| buf_version | Version of the Buf CLI used. |
| buf_path | Path to the Buf CLI binary. |