Lesstep
GitHub Actions・git・2026年11月3日に確認

GitHub Actions:「fatal: detected dubious ownership in repository」

git は、ほかのユーザーのディレクトリにあるリポジトリを使うのを断ります。GitHub のホストランナーではチェックアウトはランナーのユーザーのものなので、ステップが別のユーザーで git を動かすときに出ます。コンテナの中の root、Docker のアクション、セルフホストランナーのサービスのアカウントです。actions/checkout は例外を自分のためだけに設定するので、checkout のステップは通り、次の git のコマンドが失敗します。

見え方

fatal: detected dubious ownership in repository at '/__w/octo-repo/octo-repo'
To add an exception for this directory, call:

	git config --global --add safe.directory /__w/octo-repo/octo-repo
Error: Process completed with exit code 128.

ほかの道具は、同じ行のまわりを自分の言葉で包みます。gh は「failed to run git: fatal: detected dubious ownership」、Composer は、リポジトリが「does not have the correct ownership and git refuses to use it」(持ち主が正しくなく、git が使うのを断る)と言います。

checkout が次のステップを守らない理由

set-safe-directory は既定で有効ですが、actions/checkout はそれを一時的なホームディレクトリのグローバル設定に書きます。ログには「Temporarily overriding HOME='…' before making global git config changes」と出て、ソースはそのディレクトリをあとで消します。次のステップは本当の HOME を使い、そこに例外はありません(goabonga cloud #125・sast-benchmarks #18)。

1. container: のあるジョブ

/__w の下のワークスペースはランナーのユーザーのもので、たいていのイメージはステップを root で動かします。あるパイプラインでは、コンテナの9本が git tag --list で失敗し、同じコンテナのほかの9本は、checkout のあとに git を使っていなかったので通っただけでした(goabonga cloud #125)。checkout のあと、最初の git のコマンドの前に、例外を1回足します:

jobs:
  release:
    runs-on: ubuntu-latest
    container: node:22-bookworm
    steps:
      - uses: actions/checkout@v7
      - run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
      - run: git describe --tags

2. Docker のアクション、またはワークスペースをマウントした docker run

3. ステップが別のアカウントで動くセルフホストランナー

ある Windows のランナーでは、チェックアウトは設定した人のユーザーのもので、ステップは NETWORK SERVICE で動いていたので、gh release create が C:/actions-runner/_work/… で失敗しました(ocgp-godot-tps-bench #8)。ランナーのサービスを作業フォルダーの持ち主のアカウントで動かすか、ジョブで例外を足します。セルフホストランナーでのコンテナのジョブは 1 と同じです(sast-benchmarks #18)。

ジョブは失敗しないまま壊れることがある

git のエラーが隠れると、ジョブは緑のまま間違った答えを出します。2>/dev/null と || を使ったデプロイの見張りは、コミットが無いと報告し(CellarNode .github #48)、コンテナのジョブの差分のチェックは一度も差分を見つけませんでした(#237)。実行が通っていても、ログで「dubious ownership」を探します。CellarNode は GIT_TEST_ASSUME_DIFFERENT_OWNER=1 で手元で再現しました。

見分け方

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

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

ほかに:「could not read Username for 'https://github.com'」 · git push の「Permission to ... denied to github-actions[bot]」 · 「No space left on device」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English