Lesstep
GitLab.com・Self-Managed・REST API・2026年10月24日に確認

GitLab の 404「Project Not Found」

GitLab は、そのパスにプロジェクトが無いときも、あっても見る権限が無いときも、同じ答えを返します。非公開のプロジェクトと、存在しないプロジェクトを区別しません。なので直すのは、住所か権限のどちらかです。トークンそのものがおかしいときは 401(「invalid_token」か「401 Unauthorized」)、スコープが足りないときは 403 の「insufficient_scope」になります。

答えの全体

2026年10月24日に、gitlab.com へトークンなしで:

curl -i "https://gitlab.com/api/v4/projects/no-such-group%2Fno-such-project"

HTTP/1.1 404 Not Found
{"message":"404 Project Not Found"}

プロジェクトのマージリクエストとパイプライン(/projects/:id/merge_requests・/projects/:id/pipelines)も同じ答えです。GitLab のソース(lib/api/helpers.rb の find_project!)では、存在しないプロジェクトも、呼んだ人が読めないプロジェクトも、どちらも not_found!('Project') に行き着きます。GitLab の状態コードの説明も、404 を「ID が見つからない、または、その人にアクセスの権限が無い」としています。GitLab の GraphQL の API は 404 を返さず、どちらの場合も {"data":{"project":null}} です。

「404 Project Not Found」と「404 Not Found」

プロジェクトがあるとき

トークンでプロジェクトが見えるかを確かめるには:

curl -i --header "PRIVATE-TOKEN: your-token" "https://gitlab.com/api/v4/projects/your-group%2Fyour-project"

200 でプロジェクトが返れば見えています。その場合は、失敗している道具が使っている住所を見ます。Self-Managed なら gitlab.com の代わりにそのサーバーの住所で。

住所が違うとき

名前を変えた・移したプロジェクト

古いパスでも 404 にはなりません。読む(GET)と、プロジェクトの番号の住所へ 301 で案内されます。番号はパスを変えても変わりません。2026年10月24日に、/api/v4/projects/gitlab-org%2Fgitlab-ce は /api/v4/projects/13083 への 301 でした。それ以外(承認・コメント・マージなど)は 405 の Non GET methods are not allowed for moved projects です(同じ find_project!)。GraphQL は古いパスをたどりません。同じ日に project(fullPath: "gitlab-org/gitlab-ce") は null でした。新しいパスを使ってください。

IntelliJ IDEA で GitLab の MR とパイプラインを見るなら

Lesstep は、JetBrains IDE(2024.1 以降)のプラグインを2つ作っています。Merge Request Inbox for GitLab と Pipeline Inbox for GitLab CI です。どちらもプロジェクトのパスを、サブグループも含めて Git のリモートから取り、自分でエンコードします。GitLab がそこにプロジェクトを見せないときは、トークンが無ければ、プロジェクトが非公開か存在しないと言ってトークンの設定を勧め、トークンがあれば、そのパスにトークンで見えるプロジェクトが無いと言います。どちらも設定を開けるようにします。名前を変えた・移したプロジェクトを古いパスのままのクローンで開いたときは、どちらも GitLab にいまの場所を聞いてそこを使います。MR のプラグインは承認・コメント・マージ・変更の依頼で(1.0.13 から)、パイプラインのプラグインは一覧と再実行・取り消し・実行で(1.0.14 から)。読むのは無料、承認・コメント・マージや、パイプラインの再実行・取り消し・実行は Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。

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

ほかに:GitLab の 404「Group Not Found」 · GitLab の 401「invalid_token」 · GitLab の「insufficient_scope」 · GitLab のマージの断り(405・409・422) · GitLab の承認の断り(401・409) · GitLab のコメント・スレッドの断り(400・403) · GitLab のマージリクエストが作れない(409・422・400) · GitLab のリベースの断り・失敗(403・409) · GitLab の MR の一覧の断り(400・404) · GitLab の MR の変更が欠ける(「1000+」・too_large) · GitLab の 429「Retry later」(回数の上限) · GitLab の「compare_timeout」(差分の上限) · JetBrains の IDE で GitLab のマージリクエストを扱う · JetBrains の IDE で GitLab のパイプラインを扱う · English