結論:保存先を作り、狭い許可から再登録する
Claude Codeで「常に許可」が残らない場合は、最新版へ更新したうえで、対象projectに.claude/settings.local.jsonが存在するか、同じpathで起動しているか、上位scopeのdenyやmanaged settingsが競合していないかを確認し、必要最小限の規則を再登録します。公式CHANGELOG 2.1.252では、local settings fileがまだないprojectでalways allowが保存されない不具合の修正が明記されています。
具体的な困りごとは、安全だと確認した同じcommandで毎回permission promptが出て作業が止まり、急いで広い許可を与えたくなることです。読了後には、不具合、保存先、scope競合、project識別のどこに原因があるかを判断できます。次の行動は、versionと現在directoryを記録し、再現する一つのcommandだけで検証することです。
always allowは安全性の保証ではなく、特定条件のpermission確認を省略する設定です。料金はこの設定自体にはかかりませんが、許可後に実行されるClaude Codeの利用量は契約plan、model、token、追加usageに依存します。保存を直すためにbypassPermissionsへ切り替えると、問題の原因を隠し、意図しない外部送信や削除まで自動実行されるため避けます。
保存されない4原因を比較する
- version不具合:2.1.252より前で、local settings file未作成時の保存に失敗している可能性があります。
- 保存scope:sessionだけの承認とproject localへ残る承認を取り違えている状態です。
- path違い:symlink、worktree、親directoryからの起動により、別projectとして認識されています。
- 規則競合:user、project、local、managed settingsのより強いdenyや管理方針が優先されています。
最初にversionを確認する理由は、既知不具合を設定操作で迂回しないためです。更新後も再現するなら、保存fileの有無だけで成功と判断せず、Claude Codeを終了して同じproject pathから再起動し、同一commandでpromptが再び出るか確認します。設定fileへ秘密情報を入れたり、repositoryへlocal設定をcommitしたりしません。
組織管理環境ではmanaged settingsが個人設定より強い場合があります。個人が変更しても戻るときは、設定破損ではなく意図したpolicyかもしれません。誰が管理するscopeか、変更承認が必要か、反映時刻はいつかを管理者へ確認します。提供条件や正式なkeyは更新されるため、公式settings文書を正本にし、古い記事のJSON例をそのまま貼りません。
安全に直す7手順
- 公式CHANGELOGで2.1.252以降の修正内容を確認します。
- 実環境のClaude Code versionを記録し、組織の更新手順に従います。
- 再現projectの絶対path、Git root、worktreeを記録します。
.claude/settings.local.jsonの有無と、repositoryへ追跡されていないことを確認します。- user、project、local、managedのpermission規則を狭い順に照合します。
- 読取など低riskな一commandだけでalways allowを選び、再起動します。
- 同じpath、同じcommandで再確認し、結果とversionを運用logへ残します。
手動修正する場合は現状をbackupし、JSON構文、許可対象、denyとの優先関係を確認します。command全体をwildcardで許可せず、対象tool、引数、directoryを絞ります。Git操作ならread-onlyとwrite、local commitとpushを分け、network送信、package公開、deploy、削除は都度確認を維持します。
再現確認では別のcommandへ変えません。条件を一つずつ変え、version更新で直ったのか、保存file作成で直ったのか、path統一で直ったのかを特定します。これにより次回の端末移行や新worktreeでも、どの設定を配布し、どれをlocalに残すべきか判断できます。
team展開では、許可規則の変更を通常のcode reviewと分けて扱います。対象command、必要理由、利用者、期限、取消方法を一件ずつ記録し、月次で未使用規則を見直します。開発環境で許可した規則を本番保守端末へ自動複製せず、環境ごとの影響範囲を再評価します。特にpackage install、credential操作、remoteへのwriteは、同じcommand名でも引数と接続先でriskが変わります。
不具合報告を作る場合は、秘密を除いたversion、OS、起動path、settingsのscope、最小再現手順を添えます。設定file全体やterminal logをそのまま共有せず、API key、username、repository名をmaskします。既知修正後にも再現するときは、追加の広い許可で押し切らず、公式supportへ再現条件を渡します。
更新判断はClaude Platform公式release notesも併読します。
公開・運用前チェックリスト
- 公式CHANGELOGを読んだ
- 利用versionを記録した
- 絶対pathを確認した
- Git rootを確認した
- local settingsの保存先を確認した
- 秘密情報を保存していない
- managed settingsを確認した
- denyとの競合を確認した
- 最小commandで再現した
- 再起動後も確認した
- 広いwildcardを許可していない
- 結果を記録した
HOLD条件は、管理者policyの意図が不明、保存fileへcredentialが含まれる、project pathが一定しない、広いBashやnetwork操作だけで検証している、更新権限がない場合です。修正できないときはpromptを無効化せず、毎回確認を残したまま管理者へversion、path、再現command、期待結果、実結果を渡します。
よくある質問と次の行動
local settings fileがなければ自分で作るべきですか?
まず2.1.252以降へ更新してUIから保存を試し、手動作成は公式schemaを確認できる場合だけ行います。
別worktreeでも同じ許可になりますか?
pathやproject判定が異なる可能性があります。各worktreeで最小権限を確認し、無条件に複製しません。
直ったことは何で判断しますか?
再起動後に同一path・同一commandで不要なpromptが出ず、deny対象は引き続き止まることを確認します。
一次情報はClaude Code公式CHANGELOGとClaude Code公式settings文書です。関連する権限設定の基本、managed settings承認、workspace trustも確認してください。Miraigentの無料診断では、社内permission scopeを60秒で整理します。
