Lesstep
Forgejo・Gitea・Codeberg・API の 404・2026年10月24日に確認

Forgejo・Gitea の 404「The target couldn't be found.」と「not found」

サーバーは、存在しないリポジトリにも、存在するが見る権限のないリポジトリにも、同じ 404 を返します。Forgejo と Gitea のソースでは、API はまずリポジトリを探し、次に権限を確かめ、権限がまったく無ければ、無いときとまったく同じに「not found」と答えます。つまり非公開のリポジトリは、トークンなしで読むと、またはトークンのアカウントに権限が無いと、存在しないリポジトリに見えます。まずトークン、次に住所を確かめます。

サーバーごとの文言

2026年10月24日に問い合わせた答えです。Codeberg(Forgejo 16)と code.forgejo.org(Forgejo 17)で、リポジトリが無いとき(ソースによれば、見る権限が無いときも同じ):

HTTP/1.1 404 Not Found

{"message":"The target couldn't be found.","url":"https://codeberg.org/api/swagger","errors":[]}

和訳:「対象が見つかりませんでした」。同じサーバーで、持ち主(住所のユーザーか組織)すら存在しないとき:

{"message":"GetUserByName","url":"https://codeberg.org/api/swagger","errors":["user redirect does not exist [name: no-such-owner]"]}

和訳:「ユーザーの転送先がありません」。gitea.com では、どちらのときも:

{"message":"not found","url":"https://gitea.com/api/swagger"}

自社のサーバーでは、版によって文言が違うことがあります。404 であることは同じです。トークンでリポジトリを確かめるには:

curl -i -H "Authorization: token your-token" https://codeberg.org/api/v1/repos/OWNER/REPO

200 でリポジトリが返れば、そのトークンで見えています。codeberg.org の代わりに自社のサーバーの住所を使います。

リポジトリはあるとき

住所が違うとき

API の住所は /api/v1/repos/持ち主/リポジトリ名 で、持ち主とリポジトリ名はクローンの住所のとおりです。Forgejo の GetUserByName の答えは、持ち主の部分からしてこのサーバーに無い、という意味です。ユーザーか組織の打ち間違いか、リポジトリが別のサーバーにあるかです。

名前を変えた・移したリポジトリ

Forgejo と Gitea のソースより:その名前のリポジトリが無いとき、サーバーは名前の変更で残った転送先を探します。

転送をたどる道具なら古い住所でもリポジトリを読めるので、古い住所のクローンでも動いているように見えます。何かを変える呼び出しは、道具が新しい住所へ送り直さない限り、301 が返るだけです。クローンを新しい住所へ向けます:

git remote set-url origin https://codeberg.org/NEW-OWNER/NEW-NAME.git

IntelliJ IDEA で Forgejo・Gitea のプルリクを見るなら

Lesstep の Pull Request Inbox for Forgejo and Gitea は、JetBrains IDE(2024.1 以降)のプラグインです。Codeberg 用と自社のサーバー用にトークンを1つずつ持ち、どちらも IDE のパスワード保管庫に入れて、それぞれのサーバーにだけ送ります。トークンなしでは公開リポジトリを読みます。サーバーがリポジトリに 404 で答えたときは、トークンが無ければ、リポジトリが非公開か存在しないと言ってトークンの設定を開けるようにし、トークンがあれば、そのトークンで開けるリポジトリがその住所に無いと言って、住所とアカウントの権限を確かめるよう案内します。名前を変えた・移したリポジトリを古い住所のクローンで開いたときは、サーバーの転送をたどって新しい住所を使います。読むときはもちろん、1.0.13 からは承認・コメント・マージのときも同じです。転送をたどるのは同じサーバーの中だけです(トークンが別のホストへ行くことはありません)。読むのは無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。

このページは Forgejo プロジェクト・Codeberg e.V.・Gitea プロジェクト・JetBrains のいずれとも提携しておらず、推奨・承認も受けていません。Forgejo・Gitea・Codeberg はそれぞれの持ち主の名前、IntelliJ IDEA は JetBrains s.r.o. の商標です。

ほかに:401「token is required」と知らないトークン · 「token does not have at least one of required scope(s)」 · Forgejo・Gitea のマージの断り(405・409) · Forgejo・Gitea のレビューの断り(422) · Forgejo・Gitea のブランチの更新の断り(403・409・422) · Forgejo・Gitea のプルリクが作れない(409・422・403) · Forgejo・Gitea のコメントの断り(403・422・400) · Forgejo・Gitea の検索の断り(400・422) · Forgejo・Gitea のプルリクの変更ファイル(50件ずつ・changed_files) · JetBrains の IDE で Forgejo・Gitea のプルリクを扱う · English