結論:保存先を作り、狭い許可から再登録する

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原因を比較する

  1. version不具合:2.1.252より前で、local settings file未作成時の保存に失敗している可能性があります。
  2. 保存scope:sessionだけの承認とproject localへ残る承認を取り違えている状態です。
  3. path違い:symlink、worktree、親directoryからの起動により、別projectとして認識されています。
  4. 規則競合: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手順

  1. 公式CHANGELOGで2.1.252以降の修正内容を確認します。
  2. 実環境のClaude Code versionを記録し、組織の更新手順に従います。
  3. 再現projectの絶対path、Git root、worktreeを記録します。
  4. .claude/settings.local.jsonの有無と、repositoryへ追跡されていないことを確認します。
  5. user、project、local、managedのpermission規則を狭い順に照合します。
  6. 読取など低riskな一commandだけでalways allowを選び、再起動します。
  7. 同じ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公式CHANGELOGClaude Code公式settings文書です。関連する権限設定の基本managed settings承認workspace trustも確認してください。Miraigentの無料診断では、社内permission scopeを60秒で整理します。