<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn" -->

---
title: GitHub Actions for Buf now available · Buf | daily.dev
description: Buf provides official GitHub Actions (buf-setup, buf-lint, buf-breaking, buf-push) to integrate Protocol Buffers workflows into CI/CD pipelines. The guide...
canonical: https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: GitHub Actions for Buf now available · Buf | daily.dev
og:description: Buf provides official GitHub Actions (buf-setup, buf-lint, buf-breaking, buf-push) to integrate Protocol Buffers workflows into CI/CD pipelines. The guide...
og:url: https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn
og:image: https://api.daily.dev/og/posts/GToVWD6hN.png
og:image:alt: GitHub Actions for Buf now available · Buf
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub Actions for Buf now available · Buf

**[Buf Blog](https://daily.dev/sources/buf)** · 5 min read · 0 upvotes · 0 comments

## Summary

Buf provides official GitHub Actions (buf-setup, buf-lint, buf-breaking, buf-push) to integrate Protocol Buffers workflows into CI/CD pipelines. The guide walks through setting up a workflow for linting proto files, detecting breaking API changes on pull requests, and automatically pushing modules to the Buf Schema Registry (BSR) on merges to main, including handling API tokens and configuration nuances like ref=HEAD~1 for merge strategies.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://buf.build/blog/github-actions-for-buf-now-available>

## Questions this post answers

### How do I set up GitHub Actions to detect breaking changes in Protocol Buffers files?

Use the buf-breaking GitHub Action alongside buf-setup in a workflow triggered on pull_request events. Configure it to compare against the HEAD of the main branch; it fails the step and posts inline PR comments and run annotations when incompatible changes are detected, such as changing a field's type.

_daily.dev surfaces practical CI/CD setups for teams enforcing API compatibility in protobuf projects._

### How do I automatically push Protocol Buffers files to the Buf Schema Registry on merge to main?

Create a separate workflow triggered on pushes to main that runs lint and breaking change checks against the prior commit using ref=HEAD~1, then invokes buf-push-action to upload the module, tagged with the git commit SHA, linking the GitHub repo directly to the BSR. Note ref=HEAD~1 fails for rebase-and-merge but works with merge commit or squash merge.

_developers automating schema registry syncs can track buf workflow patterns on daily.dev._

### Why did my buf-lint GitHub Action fail on a proto field named Major instead of major?

The FIELD_LOWER_SNAKE_CASE lint rule requires proto field names to use lower snake case, so a field named Major instead of major violates it. The buf-lint action detects this, fails the CI step, and adds both an annotation to the GitHub Actions run and an inline comment on the pull request.

_daily.dev helps developers debugging proto lint failures stay current on buf tooling changes._

## Similar posts on daily.dev

- [The modern Protobuf workflow · Buf](https://daily.dev/posts/the-modern-protobuf-workflow-buf-c2m7gywhe) · Buf Blog · 1 upvotes · 0 comments
- [Protobuf, JSON Schema, and OpenAPI · Buf](https://daily.dev/posts/protobuf-json-schema-and-openapi-buf-00wgyenfv) · Buf Blog · 7 upvotes · 0 comments

---

Tags: [#backend](https://daily.dev/tags/backend), [#cicd](https://daily.dev/tags/cicd), [#github-actions](https://daily.dev/tags/github-actions), [#grpc](https://daily.dev/tags/grpc)

[View this post on daily.dev](https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"GitHub Actions for Buf now available · Buf","url":"https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn"},"datePublished":"2026-08-23T07:20:09.416Z","dateModified":"2026-08-23T07:20:32.172Z","description":"Buf provides official GitHub Actions (buf-setup, buf-lint, buf-breaking, buf-push) to integrate Protocol Buffers workflows into CI/CD pipelines. The guide...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/1ca8c451b592f2f02757355035dcd2f6?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/1ca8c451b592f2f02757355035dcd2f6?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Buf Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Buf Blog","logo":"https://media.daily.dev/image/upload/s--2YBgo_Nm--/f_auto,q_auto/v1787469605/logos/buf?_a=BAMAMicg0","url":"https://daily.dev/sources/buf"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"backend,cicd,github-actions,grpc","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Buf Blog","item":"https://daily.dev/sources/buf"},{"@type":"ListItem","position":3,"name":"GitHub Actions for Buf now available · Buf"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/github-actions-for-buf-now-available-buf-gtovwd6hn#faq","mainEntity":[{"@type":"Question","name":"How do I set up GitHub Actions to detect breaking changes in Protocol Buffers files?","acceptedAnswer":{"@type":"Answer","text":"Use the buf-breaking GitHub Action alongside buf-setup in a workflow triggered on pull_request events. Configure it to compare against the HEAD of the main branch; it fails the step and posts inline PR comments and run annotations when incompatible changes are detected, such as changing a field's type. daily.dev surfaces practical CI/CD setups for teams enforcing API compatibility in protobuf projects."}},{"@type":"Question","name":"How do I automatically push Protocol Buffers files to the Buf Schema Registry on merge to main?","acceptedAnswer":{"@type":"Answer","text":"Create a separate workflow triggered on pushes to main that runs lint and breaking change checks against the prior commit using ref=HEAD~1, then invokes buf-push-action to upload the module, tagged with the git commit SHA, linking the GitHub repo directly to the BSR. Note ref=HEAD~1 fails for rebase-and-merge but works with merge commit or squash merge. developers automating schema registry syncs can track buf workflow patterns on daily.dev."}},{"@type":"Question","name":"Why did my buf-lint GitHub Action fail on a proto field named Major instead of major?","acceptedAnswer":{"@type":"Answer","text":"The FIELD_LOWER_SNAKE_CASE lint rule requires proto field names to use lower snake case, so a field named Major instead of major violates it. The buf-lint action detects this, fails the CI step, and adds both an annotation to the GitHub Actions run and an inline comment on the pull request. daily.dev helps developers debugging proto lint failures stay current on buf tooling changes."}}]}
```

