Lesstep
Azure DevOps Services と Server・git push と REST API・2026年10月24日に確認

Azure DevOps の「TF401027: You need the Git 'GenericContribute' permission to perform this action.」

「この操作には Git の 'GenericContribute' の許可が要る」という意味です。TF401027 は、メッセージの identity のアカウントに、リポジトリかブランチの Git の許可が1つ無いことを名指ししています。Azure DevOps の中の許可の話で、トークンの権限(スコープ)や git の資格情報の話ではありません。サインインし直しても、トークンを作り直しても変わりません。プロジェクトの管理者が Project settings → Repositories → Security で付けます。パイプラインなら、相手はビルド サービスのアカウントです。

答えの全体

2020年〜2026年10月の公開の報告が引いている形です。git push なら remote: の行に、REST API なら HTTP 403 の JSON の message に出ます:

TF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\<GUID>', scope 'repository'.

引用符の中の名前は断られた操作で変わり(CreateBranch・PullRequestContribute・ForcePush など)、identity は許可が無いアカウント、scope は repository か branch です。私たち自身ではこの答えを起こしていません。上の行は、読んだ報告のどれもが引いている形です。

どの許可か

メッセージの名前は Azure DevOps の中の名前です。Security の画面ではこう呼ばれます(Microsoft の許可の一覧):

既定では(Set Git repository permissions)、プロジェクトの Readers は Read と Contribute to pull requests を持ち、Contributors はそれに加えて Contribute・Create branch・Create tag・Manage notes を持ちます。Force push と2つの Bypass は、どのグループにも付いていません。なので、人が GenericContribute や CreateBranch で TF401027 になるのは、たいてい Readers にしか入っていないか、どれかのグループの Deny(Allow より強い)に当たっているときです。

だれの許可か

許可を付ける

  1. プロジェクトの管理者(かリポジトリの Manage permissions を持つ人)が、Project settings → Repositories を開きます。
  2. プロジェクトのすべてのリポジトリなら All Repositories → Security、1つならそのリポジトリを選んで Security。
  3. メッセージのユーザー・グループ・ビルド サービスのアカウントを探し、その許可を Allow にします。Azure DevOps Services はその場で保存され、Azure DevOps Server では Save changes を押します。
  4. もう Allow なのに断られるなら、そのアカウントのグループかブランチに Deny が無いかを見ます。

push するパイプラインについて、Microsoft の Run Git commands in a script は、Users の下の <プロジェクト名> Build Service (<組織>) を選んで Create branch・Contribute・Read・Create tag を許し、git push がジョブのトークンを使えるように checkout に persistCredentials: true を付けています:

steps:
- checkout: self
  persistCredentials: true

必須のポリシーがあるブランチへの push の断りは、別の文 TF402455 です:新しいブランチへ push してプルリクを作る。

IntelliJ IDEA と Rider で Azure DevOps のプルリクエストを

Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。自分のレビューを待っているプルリクエストを IDE のツールウィンドウに並べます。Azure DevOps Services でも Azure DevOps Server でも使えます。投票とコメントにはアカウントの Contribute to pull requests を使い、これは Readers と Contributors に既定で付いています。1.0.34 からは、Azure DevOps が TF401027 で変更を断ったとき、足りない許可を Security の画面の名前で出し、付ける場所を案内します(別のトークンを求めません)。レビューの受け箱は無料、投票・コメント・完了は Pro(30日間の無料試用つき)です。画面は日本語です。

JetBrains Marketplace で入れる

Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:TF401019:リポジトリが無いか、権限が無い · IntelliJ IDEA 2025.2 以降で使える Azure DevOps のプラグイン · English