Azure DevOps の「TF400813: The user '…' is not authorized to access this resource.」
「ユーザー '…' にはこのリソースへのアクセスが許可されていない」という意味で、Azure DevOps が HTTP 401 で断っています。まず引用符の中の ID を見てください。aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa なら、Azure DevOps は資格情報を何も受け付けず、匿名の呼び出しとして扱っています。トークンが無い、写し間違い、期限切れ・取り消し済み、または Azure DevOps の期待する形で送られていない、のどれかです。
答えの全体
2026年10月23日に、非公開の組織へトークン無しと無効なトークンの両方で呼んだときの dev.azure.com の答え:
curl -u ':not-a-valid-token' -H 'X-TFS-FedAuthRedirect: Suppress' \
'https://dev.azure.com/<組織>/_apis/projects?api-version=7.1'
HTTP 401
{"$id":"1","innerException":null,
"message":"TF400813: The user 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' is not authorized to access this resource.",
"typeName":"Microsoft.TeamFoundation.Framework.Server.UnauthorizedRequestException, Microsoft.TeamFoundation.Framework.Server",
"typeKey":"UnauthorizedRequestException","errorCode":0,"eventId":3000}
X-TFS-FedAuthRedirect: Suppressのヘッダーを付けないと、同じ呼び出しは HTTP 302 でサインインの画面(…vssps.visualstudio.com/_signin…・HTML の「Object moved」)へ回されました。リダイレクトをたどる道具では、JSON のはずがサインイン画面の HTML で終わり、TF400813 は出てきません。- 公開プロジェクトのある組織でも、組織そのもののプロジェクト一覧(
_apis/projects)はトークン無しで TF400813 でした。一方、公開プロジェクトの中のリポジトリ一覧(<プロジェクト>/_apis/git/repositories)は、トークン無しでも無効なトークンでも 200 でした。公開プロジェクトの中の呼び出しはトークン無しで通ることがありますが、組織への呼び出しは通りません。 - 存在しない組織の名前では、トークンの有無にかかわらず HTTP 404 と HTML の「Page not found」でした。
- 公開のバグ報告には
TF400813: Resource not available for anonymous access. Client authentication required.(匿名ではこのリソースを使えない・クライアントの認証が要る)という文も出てきます。
ID が aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa のとき
匿名の呼び出しとして扱われています。次の順に確かめます:
- トークンを送っているか。個人用アクセス トークンは、ユーザー名を空にしてトークンをパスワードにした Basic 認証で受け付けられます:
curl -u ':<トークン>'、またはヘッダーAuthorization: Basic+:<トークン>の Base64。 - トークン全体か。コピーで入った空白・改行や、1文字の欠けだけで無効になります。
- 期限切れ・取り消し済みではないか。右上の User settings → Personal access tokens で期限を見ます。
- Microsoft Entra のトークンか。有効なのは1時間です(Microsoft)。更新しないまま持ち続ける道具は、その後に失敗し始めます。IDE のプラグインのセッションが数時間後に使えなくなり、この匿名の ID が出た公開の報告があります。
- 「All accessible organizations」のトークンか。Azure DevOps Services で廃止が決まっています(日付は2026年12月1日だったが、10月23日に延期):組織用に作り直す。
別の ID のとき
Azure DevOps はその ID として資格情報を受け付けたうえで、その ID にはこのリソースを開く許可が無い、と言っています。そのアカウントがこの組織のメンバーか、ブラウザーでそのプロジェクトを開けるかを確かめます。読む権限の無いリポジトリは、これとは違い HTTP 404 と TF401019 で答えます。
トークンを手で確かめる
curl -u ':<トークン>' -H 'X-TFS-FedAuthRedirect: Suppress' \ 'https://dev.azure.com/<組織>/_apis/git/repositories?api-version=7.1'
リポジトリの一覧の JSON が返れば、そのトークンはその組織で少なくとも Code (Read) として通っています。匿名の ID の TF400813 なら通っていません。
IntelliJ IDEA・Rider で Azure DevOps のプルリクを見るなら
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。こうした答えを IDE の中で1行にまとめます。401 も、サインイン画面への 302 も、HTML のページも「Azure DevOps が個人用アクセス トークンを受け付けませんでした」と表示し、確かめる所と 設定を開く のリンクを添えます。トークンの代わりに Azure CLI のサインインも使え、その有効期間の短いトークンは切れる数分前に Azure CLI へもらい直します。受信箱は無料、投票・コメント・完了は Pro(30日間の無料試用つき)です。画面は日本語です。
Azure DevOps と Microsoft Entra は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「203 Non-Authoritative Information」:JSON の代わりにサインイン ページ · VS30063:同じ断りを .NET のクライアントの言葉で · IntelliJ IDEA 2025.2 以降の Azure DevOps のプラグインの比較 · English