テクノロジー · 実用ガイド
Gitの「terminal prompts disabled」:リモート変更前に認証経路を監査
この表示が証明するのは、非対話環境でGitがユーザー名を取得できなかったことだけです。トークン失効やSSH必須を意味しません。呼び出し元、実効URL、入力方針、ヘルパーを追跡します。

「could not read Username … terminal prompts disabled」は認証情報の取得経路の失敗であり、認証情報そのものの最終診断ではありません。
方式変更や入力許可の前に、呼び出し元、実効URL、入力制御、対応ヘルパー、承認済み秘密経路を記録します。
1. 失敗時の条件を固定
正確なGitコマンド、作業場所、呼び出し元、実効アカウント、Git版、伏せ字URLを記録します。対話シェルの成功は比較材料であり、CIが同じ設定を受け取る証拠ではありません。
最初の完全なエラーとログを残しますが、トークン、Cookie、パスワード、認証ヘッダーは伏せます。内容不明の追跡を先に有効化しません。
2. 入力方針と認証供給を分離
Git文書ではGIT_TERMINAL_PROMPT=0は端末入力を止めますが、GIT_ASKPASS、core.askPass、SSH_ASKPASS、認証ヘルパーは利用できます。
最初に1へ変えないでください。自動処理が停止したり、手動ログインで欠陥が隠れたりします。非対話が意図か確認して承認済み経路を直します。
3. 実効URLとヘルパー文脈を解決
url.*.insteadOf適用後のURLでプロトコル、ホスト、関連パスを記録します。認証文脈はプロトコルとホストを厳密に照合し、useHttpPathではパスも重要です。
設定の出所とスコープを読み、system、global、local、commandを区別します。各ヘルパーが実際の呼び出し元から実行可能か確認します。
4. 秘密を表示せず取得を試験
正確なHTTPS文脈で、ヘルパーがユーザー名と認証情報を返せるかだけ確認します。値ではなく必須欄の有無と応答したヘルパーを記録します。
取得と権限を分けます。存在するトークンでも権限不足、失効、方針拒否があり得るため、承認済み秘密機構から接続を試験します。
5. 所有境界を直し完了を証明
欠けたヘルパーを戻す、URL文脈を直す、承認済みCI資格情報を渡す、または意図した場合だけSSHへ替えます。無差別なglobal insteadOfは避けます。
元の呼び出し元で元の非対話コマンドを再実行し、入力なしの成功と目的操作を確認します。一時追跡を削除し、露出した秘密は更新します。
