Skip to content

PATH に読めないディレクトリがあると、CLI が入っていないときに init が PermissionError で落ちる #813

Description

@takemi-ohama

何を見つけたか

PATH に読めないディレクトリがあると、参加者の CLI が入っていないときに cross-reviewinit が終了コード 0 ではなく、トレースバックを出して終了コード 1 で落ちる。#478 が直した「CLI が 1 者欠けても使える者だけで始まる」が、この PATH では成り立たない。

再現(ndf 10.16.0、2026-09-22T15:2xZ):

cd plugins/ndf/scripts
python3 -c "import sys; sys.path.insert(0,'.'); from lib import auth; print(auth._run_probe(('ndf-no-such-cli-xyz','--version')))"
# => PermissionError: [Errno 13] Permission denied: 'ndf-no-such-cli-xyz'

この環境の PATH は 13 番目に /root/.local/bin を持ち、実行している利用者(ubuntu)からは読めない(ls: cannot open file '/root/.local/bin': Permission denied)。subprocess.run は PATH を順に探し、見つからないまま読めないディレクトリに当たると FileNotFoundError ではなく PermissionError を上げる。

どこで見つけたか

  • plugins/ndf/scripts/lib/auth.py_run_probe(56 行)。except FileNotFoundError:except subprocess.TimeoutExpired: だけを捕まえ、docstring の「例外は上げない」が成り立たない
  • 見つけた場面: ndf 10.16.0 のリリース後テストの AC45(kiro-cli を PATH から隠して PR 検証用: ndf 10.16.0 のリリース後テスト(マージしない) #812init)。PATH から /root の項目を外すと終了コード 0 で通り、席は codex agy の 2 席になった
  • 同じ関数を通るため cross-refactoringinit も落ちる見込み(コードから読んだだけで実行はしていない)

なぜこの変更の範囲外なのか

#478 / #727 の受け入れ条件は「CLI が無い環境で init が終了コード 0 で終わる」で、テストと PATH が素直な環境では満たした。読めないディレクトリを PATH に持つ環境は要求・設計の時点で想定しておらず、リリース後テストで初めて踏んだ。リリース後テストで見つかった不具合は配布した版で直さず、別のまとまり(10.16.1)で直す。

直さないと何が起きるか

PATH に読めない項目を持つ環境(コンテナで root の設定を継いだ場合など)では、参加者の CLI が 1 つでも入っていないと cross-review / cross-refactoring が始まらない。#478 の直す前と同じ症状に戻る。直し方の候補は except OSError で捕まえて「コマンドを実行できません(<理由>)」として外すこと。

由来

issue #478 のリリース後テスト(PR #810 / 検証用 PR #812、ndf 10.16.0)

進行

モード: standard / 作業ツリー: .worktrees/fix/issue-811-813-release-verification-fixes / 計画: issues/issue-811-813-implementation-plan.md

  • 要求と受け入れ条件 — 2026-09-22 15:56
  • 作業場所の用意 — 2026-09-22 15:57
  • 設計 — 2026-09-22 16:08
  • 素材の収集と出典の確定
  • ドキュメント再構成 — 2026-09-22 16:11
  • ドキュメントレビュー — 2026-09-22 16:12
  • 計画 — 2026-09-22 17:16
  • 実装 — 2026-09-22 17:17
  • 構造改善 — 2026-09-22 17:28
  • 実装レビュー — 2026-09-22 19:38
  • 完了判定 — 2026-09-22 20:01
  • Pull Request — 2026-09-22 17:25
  • 確定仕様化 — 2026-09-22 20:16
  • 後片付け — 2026-09-22 17:14
  • 配布 — 2026-09-22 20:44
  • 体裁レビュー
  • リリース後テスト — 2026-09-22 21:43
  • 振り返り — 2026-09-22 21:51

閉じる理由(2026-09-22)

振り返り: #832 (comment)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ndf-skillNDF の Skill 本体bugSomething isn't workingpriority: high実害・安全機構の欠落など、優先して対応する

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions