NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #307 by repository stars
Last release today
08 Oct 2026
Ships on a steady schedule
a new release about every 1 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
2442 releases · first in 2019
Fix bug where authentication headers were not threaded through for certain Buf Schema Registry commands.
Nothing published for this version
Add commands for the Buf Schema Registry. Visit our website to add yourself to the waitlist.
One column per quarter.
Allows comment ignores of the form // bufignore ID to be cascaded upwards for specific rules.
Allows comment ignores of the form // buf:lint:ignore ID to be cascaded upwards for specific rules.
ENUM_VALUE_PREFIX, ENUM_VALUE_UPPER_SNAKE_CASE, both the enum value and the enum are checked.FIELD_LOWER_SNAKE_CASE, FIELD_NO_DESCRIPTOR, both the field and message are checked.ONEOF_LOWER_SNAKE_CASE, both the oneof and message are checked.RPC_NO_CLIENT_STREAMING, RPC_NO_SERVER_STREAMING, RPC_PASCAL_CASE, RPC_REQUEST_RESPONSE_UNIQUE, both the method and service are checked.RPC_REQUEST_STANDARD_NAME, RPC_RESPONSE_STANDARD_NAME, the input/output type, method, and service are checked.Fix error when unmarshalling plugin configuration with no options
Allow opt in buf.gen.yaml files to be either a single string, or a list of strings. Both of the following forms are accepted, and result in foo=bar,ba
opt in buf.gen.yaml files to be either a single string, or a list of strings. Both of the following forms are accepted, and result in foo=bar,baz,bat:version: v1beta1
plugins:
- name: foo
out: out
opt: foo=bar,baz,bat
version: v1beta1
plugins:
- name: foo
out: out
opt:
- foo=bar
- baz
- bat
…to be available at the same paths, however deprecation messages are printed.
buf check lint to buf lint.buf check breaking to buf breaking.buf check ls-lint-checkers to buf config ls-lint-rules.buf check ls-breaking-checkers to buf config ls-breaking-rules.protoc-gen-buf-check-lint to protoc-gen-buf-lint.protoc-gen-buf-check-breaking to protoc-gen-buf-breaking.buf beta config init.All previous commands continue to work in a backwards-compatible manner, and the previous protoc-gen-buf-check-lint and protoc-gen-buf-check-breaking binaries continue to be available at the same paths, however deprecation messages are printed.
Nothing published for this version
Add strategy option to buf.gen.yaml generation configuration. This allows selecting either plugin invocations with files on a per-directory basis, or
strategy option to buf.gen.yaml generation configuration. This allows selecting either plugin invocations with files on a per-directory basis, or plugin invocations with all files at once. See the generation documentation for more details.Fix issue where SourceCodeInfo for map fields within nested messages could be dropped.
SourceCodeInfo for map fields within nested messages could be dropped.breaking.ignore_unstable_packages = true.Add symlink support for directory inputs. Symlinks will now be followed within your local directories when running buf commands.
buf commands.breaking.ignore_unstable_packages option to allow ignoring of unstable packages when running buf check breaking. See the documentation for more details.allow_alias option that add new aliases to a given number will no longer be considered breaking by ENUM_VALUE_SAME_NAME. See the documentation for more details.Nothing published for this version
Fix issue where --experimental_allow_proto3_optional was not set when proxying to protoc for the builtin plugins via buf generate or buf protoc. This
--experimental_allow_proto3_optional was not set when proxying to protoc for the builtin plugins via buf generate or buf protoc. This flag is now set for protoc versions >= 3.12.Note that the --file flag continues to work, but prints a deprecation message.
--file flag to --path and allow --path to take both files and directories, instead of just files with the old --file. This flag is used to filter the actual Protobuf files built under an input for most commands. You can now do for example buf generate --path proto/foo to only generate stubs for the files under proto/foo. Note that the --file flag continues to work, but prints a deprecation message.Relax validation of response file names from protoc plugins, so that when possible, plugins that are not compliant with the plugin specification are s
buf generate.Nothing published for this version
- Add git:// protocol handling.
git:// protocol handling.The --source flag on buf build has been deprecated in favor of passing the input as the first argument.
As we work towards v1.0, we are cleaning up the CLI UX. As part of this, we made the following changes:
buf image build has been moved to buf build and now accepts images as inputs.buf beta image convert has been deleted, as buf build now covers this functionality.-o flag is no longer required for buf build, instead defaulting to the OS equivalent of /dev/null.--source flag on buf build has been deprecated in favor of passing the input as the first argument.--source-config flag on buf build has been moved to --config.--input flag on buf check lint has been deprecated in favor of passing the input as the first argument.--input-config flag on buf check lint has been moved to --config.--input flag on buf check breaking has been deprecated in favor of passing the input as the first argument.--input-config flag on buf check breaking has been moved to --config.--against-input flag on buf check breaking has been moved to --against.--against-input-config flag on buf check breaking has been moved to --against-config.--input flag on buf generate has been deprecated in favor of passing the input as the first argument.--input-config flag on buf generate has been moved to --config.--input flag on buf ls-files has been deprecated in favor of passing the input as the first argument.--input-config flag on buf ls-files has been moved to --config.We feel these changes make using buf more natural. Examples:
# compile the files in the current directory
buf build
# equivalent to the default no-arg invocation
buf build .
# build the repository at https://github.com/foo/bar.git
buf build https://github.com/foo/bar.git
# lint the files in the proto directory
buf check lint proto
# check the files in the current directory against the files on the master branch for breaking changes
buf check breaking --against .git#branch=master
# check the files in the proto directory against the files in the proto directory on the master branch
buf check breaking proto --against .git#branch=master,subdir=proto
Note that existing commands and flags continue to work. While the deprecation messages will be printed, and we recommend migrating to the new invocations, your existing invocations have no change in functionality.
Nothing published for this version
Add subdir option for archive and git Inputs. This allows placement of the buf.yaml configuration file in directories other than the base of your repo
subdir option for archive and git Inputs. This allows placement of the buf.yaml configuration file in directories other than the base of your repository. You then can check against this subdirectory using, for example, buf check breaking --against-input https://github.com/foo/bar.git#subdir=proto.Fix minor typo in buf help generate documentation.
buf help generate documentation.Move buf beta generate out of beta to buf generate. This command now uses a template of configured plugins to generate stubs. See buf help generate fo
buf beta generate out of beta to buf generate. This command now uses a template of configured plugins to generate stubs. See buf help generate for more details.Nothing published for this version
Add jar and zip support to buf protoc and buf beta generate.
buf protoc and buf beta generate.Nothing published for this version
Add the concept of configuration file version. The only currently-available version is v1beta1. See buf.build/docs/faq for more details.
v1beta1. See buf.build/docs/faq for more details.Add fish completion to releases.
protoc version for buf protoc to be 3.13.0.Move the experimental parent command to beta. The command buf experimental image convert continues to work, but is deprecated in favor of buf beta ima…
experimental parent command to beta. The command buf experimental image convert continues to work, but is deprecated in favor of buf beta image convert.buf beta generate.Add insertion point support to buf protoc.
buf protoc.Fix issue where optional fields in proto3 would cause the ONEOF_LOWER_SNAKE_CASE lint checker to fail.
optional fields in proto3 would cause the ONEOF_LOWER_SNAKE_CASE lint checker to fail.Nothing published for this version
Nothing published for this version
Fix issue where parser would fail on files starting with byte order marks.
Fix issue where custom message options that had an unset map field could cause a parser failure.
Fix issue where parameters passed with --.*_opt to buf protoc for builtin plugins were not properly propagated.
--.*_opt to buf protoc for builtin plugins were not properly propagated.Fix issue where roots containing non-proto files with the same path would cause an error.
Nothing published for this version
Nothing published for this version
Fix issue where Zsh completion would fail due to some flags having brackets in their description.
--.*_opt flags, --.*_opt flags with commas, or --.*_out flags with options that contained commas, would not be properly added.Add --by-dir flag to buf protoc that parallelizes generation per directory, resulting in a 25-75% reduction in the time taken to generate stubs for me
--by-dir flag to buf protoc that parallelizes generation per directory, resulting in a 25-75% reduction in the time taken to generate stubs for medium to large file sets.Fix issue where stderr was not being propagated for protoc plugins in CLI mode.
Add protoc command. This is a substitute for protoc that uses Buf's internal compiler.
protoc command. This is a substitute for protoc that uses Buf's internal compiler.ENUM_FIRST_VALUE_ZERO lint checker to the OTHER category.Nothing published for this version
Nothing published for this version
Fix issue where linking errors for custom options that had a message type were not properly reported
Handle custom options when marshalling JSON images (#87).
buf experimental image convert command to convert to/from binary/JSON images (#87).Add git ref support to allow specifying arbitrary git references as inputs (https://github.com/bufbuild/buf/issues/48). This allows you to do i.e. buf
buf check lint --input https://github.com/bufbuild/buf.git#ref=fa74aa9c4161304dfa83db4abc4a0effe886d253.depth input option when specifying git inputs with ref. This allows the user to configure the depth at which to clone the repository when looking for the ref. If specifying a ref, this defaults to 50. Otherwise, this defaults to 1.buf check lint --input https://github.com/bufbuild/buf.git and it will automatically choose the default branch as an input.- Add proto3 optional support.
Nothing published for this version
Add opt-in comment-driven lint ignores via the allow_comment_ignores lint configuration option and bufignore ID leading comment annotation (#73).
allow_comment_ignores lint configuration option and buf:lint:ignore ID leading comment annotation (#73).Add zip as a source format. Buf can now read zip files, either locally or remotely, for image building, linting, and breaking change detection.
--file flag to buf image build to only add specific files and their imports to outputted images. To exclude imports, use --exclude-imports.zip as a source format. Buf can now read zip files, either locally or remotely, for image building, linting, and breaking change detection.zstd as a compression format. Buf can now read and write Image files that are compressed using zstandard, and can read tarballs compressed with zstandard.bingz, jsongz, targz are now deprecated. Instead, use format=bin,compression=gzip, format=json,compression=gzip, or format=tar,compression=gzip. The formats bingz, jsongz, targz will continue to work forever and will not be broken, but will print a deprecation warning and we recommend updating. Automatic file extension parsing continues to work the same as well.Use the git binary instead of go-git for internal clones. This also enables using your system git credential management for git repositories cloned us
git binary instead of go-git for internal clones. This also enables using your system git credential management for git repositories cloned using https or ssh. See https://buf.build/docs/inputs#authentication for more details.Nothing published for this version
Fix issue where roots were detected as overlapping if one root's name was a prefix of the other.
Fix issue where filenames that contained .. resulted in an error.
.. resulted in an error.Add experimental flag --experimental-git-clone to use the git binary for git clones.
--experimental-git-clone to use the git binary for git clones.Add recurse_submodules option for git inputs. Example: https://github.com/foo/bar.git#branch=master,recurse_submodules=true
recurse_submodules option for git inputs.
Example: https://github.com/foo/bar.git#branch=master,recurse_submodules=trueNothing published for this version
Nothing published for this version
Fix issue where the option value ordering on an outputted Image was non-deterministic.
Image was non-deterministic.SourceCodeInfo for the Well-Known Types was not included on an outputted Image when requested.Your coding agent can read these notes before it upgrades. Set up the MCP server →