diff --git a/.github/workflows/buf.yml b/.github/workflows/buf.yml
new file mode 100644
index 0000000..5d9d740
--- /dev/null
+++ b/.github/workflows/buf.yml
@@ -0,0 +1,36 @@
+name: Buf lint
+
+on:
+  pull_request:
+    branches:
+      - master
+
+jobs:
+  lint:
+    runs-on: ubuntu-20.04
+    steps:
+      - uses: actions/checkout@v2
+      - uses: wizhi/setup-buf@v1
+        with:
+          version: 0.20.5
+      - run: buf check lint
+
+  breaking:
+    runs-on: ubuntu-20.04
+    steps:
+      - name: Setup buf
+        uses: wizhi/setup-buf@v1
+        with:
+          version: 0.20.5
+      - name: Check out ref code
+        uses: actions/checkout@v2
+        with:
+          ref: ${{ github.base_ref }}
+          path: baseref
+      - run: cd baseref && buf image build -o image.bin
+
+      - name: Check out code
+        uses: actions/checkout@v2
+        with:
+          path: prclone
+      - run: cd prclone && buf check breaking --against-input ../baseref/image.bin