Someone changes a protobuf field's type, or reuses a field number. The .proto is reviewed and merged. Nobody ran buf generate . CI is green: the Go still type-checks against the api.pb.go that was already in the tree. A client built from the new proto talks to a server built from the old one, and the compiler never said a word. That's the tax on committing generated code. What's in Git is a snapshot of some past run. The thing that actually defines those files is the command that wrote t...