Lesstep
Bitbucket Cloud・Pipelines・2026年10月31日に確認

Bitbucket Pipelines:パイプラインからの push が「Permission denied to update branch」

リポジトリへ push し返すステップ(版を上げる・変更履歴を書く・タグを打つ)が、ここで止まります:

+ git push origin HEAD:master
remote: Permission denied to update branch master.
 ! [remote rejected] HEAD -> master (pre-receive hook declined)
error: failed to push some refs to ...

ブランチにブランチ制限があり、この push の書き込みを許していません(Atlassian の記事 Pipelines error: remote rejected HEAD -> master (pre-receive hook declined))。

ある人では通り、別の人では失敗する理由

Pipelines は取ってきた中身の HTTP の origin を用意しているので、資格情報なしの git push がそのまま通ります(Push back to your repository)。このエラーの Atlassian の記事によると、その push は「パイプラインを始めた人」で確かめられます。始め方は、コミットの push・プルリクエストを開く・手で実行する、のどれでも同じです。その人がブランチ制限でそのブランチに書き込めれば通り、書き込めない同僚が同じパイプラインを始めると失敗します。

Pipelines そのものを制限に足すことはできません。その要望が BCLOUD-19136「Expose bitbucket-pipelines user in Bitbucket branch permissions」で、2019年7月から開いたまま、258票・状態は Reviewing です。

2026年9月15日から:リポジトリのアクセストークンで push する

Bitbucket の変更履歴(2026年9月15日):ブランチ制限の Write access と Merge access に、リポジトリ・プロジェクト・ワークスペースのアクセストークンを足せるようになりました。要望の BCLOUD-22400(427票)は同じ日に「直った」で閉じています。Atlassian の記事 Unable to push to repository - "pre-receive hook declined" error は最後の更新が2025年9月で、まだ「アクセストークンには対応していない」と書いています。

  1. そのリポジトリで:Repository settings、Security の Access tokens、Create access token。権限は Repositories: Write。リポジトリのトークンが届くのは、そのリポジトリだけです。トークンは1回しか表示されません。
  2. Repository settings、Branch restrictions:そのブランチの規則を編集し、Write access にトークンを足します。
  3. Repository settings、Pipelines の Repository variables:変数 PUSH_URL を Secured で作り、トークン入りの住所を入れます。ユーザー名は x-token-auth です(Using access tokens):https://x-token-auth:<トークン>@bitbucket.org/<ワークスペース>/<リポジトリ>.git
  4. ステップのスクリプトで:
script:
  - git remote set-url origin "$PUSH_URL"
  - git commit -am "[skip ci] Release ${BITBUCKET_BUILD_NUMBER}"
  - git push origin HEAD:master

これで push は、誰がパイプラインを始めたかに左右されず、ボット用のアカウントも要りません。メッセージの [skip ci] は、新しいコミットがまたパイプラインを始めないためです。終わらない繰り返しを防ぐために、Atlassian の push し返しの記事が勧めています。

前からのやり方:人の SSH 鍵か API トークン

Atlassian の push し返しの記事は、制限の一覧にいる人として push させます:

記事は、アカウントに設定した資格情報は、届くリポジトリを絞れないと注意しています。このエラーの Atlassian の記事も、個人の鍵を使うのは勧めないと書いています。人の SSH 鍵ではなくワークスペースに足した鍵も断られるので、その人の設定へ移します(「pre-receive hook declined」の記事)。

同じ拒否が出るほかの理由

IntelliJ IDEA で失敗した push を見る

Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを IDE のツールウィンドウに並べ、失敗したパイプラインでは、ステップが失敗したコマンドとその最後の数行(たとえば git push と Bitbucket の「Permission denied to update branch」)を見せます。制限を直しただけなら、push する新しいコミットがありません。Pro なら Run again で、同じコミットを IDE からもう一度ビルドできます。一覧・ステップ・ログは無料。実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。画面は日本語です。

JetBrains Marketplace で入れる

Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、Git は Software Freedom Conservancy の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。

ほかに:自分の PC からの push が「pre-receive hook declined」 · git のサブモジュールを取ってこない · 「We couldn't clone the repository」 · push したのにパイプラインが動かない · 失敗したパイプラインをもう一度実行する · SSH は ssh.bitbucket.org へ · 「You have reached your pull rate limit」(Docker Hub) · 「There is an error in your bitbucket-pipelines.yml」 · 「This pipeline was paused」(デプロイ) · IntelliJ IDEA の Bitbucket Pipelines 用プラグインの比較 · English