Claude Codeのspellcheck設定 — 効く3か所と優先順位
spellcheck設定が読まれるのはユーザー設定・--settings・管理設定の3か所だけです。プロジェクト側の設定ファイルでは無視される点と、3か所が競合したときの優先順位をまとめます。
spellcheck設定はどこに書くと効くのか
Claude Codeのスペルチェックは、プロンプト入力欄の綴りミスに下線を引く機能です。既定ではオフで、spellcheck設定で有効にします。効くのは次の3か所だけです。
- ユーザー設定(
~/.claude/settings.json) - コマンドラインの
--settingsで渡したJSON - 管理設定(managed settings)
プロジェクトの.claude/settings.jsonと.claude/settings.local.jsonに書いても、Claude Codeはspellcheckを無視します。チームのリポジトリにコミットして全員に配る、という使い方はできません。
3か所に別々の値があるときは、管理設定、--settings、ユーザー設定の順で1つだけが採用されます。項目ごとの合成はしません。この記事では、書き方と優先順位の挙動、下線が出ないときの切り分けを扱います。要件はClaude Code v2.1.235以降です。
設定の前に入れておく外部コマンド
Claude Codeは自前の辞書を持っていません。綴りが間違いかどうかは、ローカルにインストールしたチェッカーが判定します。
対応するのはaspell・hunspell・ispellの3つです。PATH上にあるものを、この順で探して最初に見つかったものを使います。Windowsでもパッケージマネージャーが置く.cmdのシムまで対象です。
インストールできたかは、ターミナルで確認できます。
aspell --version
hunspell --version
ispell -vどれも「command not found」なら、PATHに入っていません。設定を書く前に、ここを先に通しておきます。
ユーザー設定に書く
個人で使うなら、いちばん素直な置き場所です。~/.claude/settings.jsonに書けば、開くすべてのプロジェクトで有効になります。
{
"spellcheck": { "enabled": true }
}有効になったかは、綴りを間違えた単語を打ってスペースを入れれば分かります。下線が付けば成功です。オフに戻すときは、同じ場所でenabledをfalseにするか、spellcheckごと消します。
設定ファイル全体の作法はClaude Code設定ガイドにまとめてあります。
--settingsで1セッションだけ有効にする
「今日のセッションだけ試したい」なら、--settingsが向いています。JSONをファイルに保存して渡します。
{
"spellcheck": { "enabled": true }
}claude --settings spellcheck.jsonこのファイルの内容は、そのセッションにしか効きません。ユーザー設定は書き換わらないので、試したあとの後始末が要りません。
管理設定で組織に配る
組織で揃えたいときの経路が管理設定です。配る側は管理設定のいずれかの経路にspellcheckを書きます。受け取る全員に適用され、利用者は自分で切れません。
プロジェクト設定で配れない代わりに、この経路が用意されている形です。管理設定の配り方そのものはClaude Code組織管理ガイドが扱っています。
3か所が競合したときの優先順位
一般の設定キーは、高い階層が低い階層を上書きしつつ、書いていないキーは下の値が残る合成になります。spellcheckは違います。
| 優先 | 場所 | 採用のされ方 |
|---|---|---|
| 1 | 場所管理設定 | 採用のされ方書かれていれば、ここのブロックだけを使う |
| 2 | 場所--settings | 採用のされ方管理設定に無いときだけ、ここのブロックを使う |
| 3 | 場所ユーザー設定 | 採用のされ方上の2つに無いときだけ使う |
spellcheckのブロックは、最も高い階層のものが丸ごと採用されます。フィールド単位でのマージはありません。
具体例で見ます。ユーザー設定に次の内容があるとします。
{
"spellcheck": { "enabled": true, "language": "en_GB", "color": "yellow" }
}このときclaude --settingsで{"spellcheck": {"enabled": true}}だけを渡すと、languageとcolorはユーザー設定から引き継がれません。辞書はチェッカーの既定、下線色はテーマのエラー色に戻ります。
ここから、次の挙動が導けます。
--settingsでenabled: falseを書けば、ユーザー設定が有効でもそのセッションはオフになる- 管理設定に
spellcheckがあると、ユーザー設定のlanguageやcolorは効かない - 「一部だけ上書き」はできないので、上書きするなら全フィールドを書き直す
「languageだけ変えたいのに、enabledまで書かされる」と感じたら、この仕様が原因です。
追加できるフィールド
enabledの隣に、次の3つを置けます。どれも同じブロックの中に書きます。
| フィールド | 値 | 省略したとき |
|---|---|---|
checker | 値aspell / hunspell / ispell / auto | 省略したときauto(PATH上で最初に見つかったもの) |
language | 値en_GBのような辞書名 | 省略したときチェッカーの既定辞書 |
color | 値yellow、#rrggbb、ansi256(n)など | 省略したときテーマのエラー色 |
checkerに名前を書くと、その1つしか使いません。未インストールでも、別のチェッカーには切り替わりません。auto以外の未知の値は、auto扱いになります。
languageはパスや空白入りの文字列を渡しても無視されます。使えるのは辞書名だけです。
hunspellの英国辞書で黄色の下線にする例です。
{
"spellcheck": {
"enabled": true,
"checker": "hunspell",
"language": "en_GB",
"color": "yellow"
}
}日本語のプロンプトでは何が下線になるのか
日本語で指示を書くことが多い人は、この節が肝です。
Claude Codeは、中国語・日本語・韓国語・タイ語・ラオ語・クメール語・ミャンマー語のテキストを検査しません。日本語の文の中に混ざった英単語は、対象になります。
さらに、コードらしく見えるものは最初から除外されます。
/helpのようなコマンド、@メンション、URL、ファイルパス、--verboseのようなフラグ- 数字・アンダースコアを含む語、2文字目以降に大文字がある語(
camelCaseなど)、バッククォートで囲んだ語
固有名詞や社内用語には下線が付きます。下線を消したい単語は、チェッカーの個人辞書に足します。Claude Code側に単語リストはなく、辞書を編集したら再起動すると反映されます。
入力欄以外は検査対象外です。Claudeの返答やファイルの中身は見ません。シェルモード(!)、Ctrl+Rの履歴検索、音声入力の最中も動きません。スクリーンリーダーモードも対象外です。
オフにしたいときはどこを直すのか
オンにした場所と同じ場所で、オフにします。ユーザー設定ならenabledをfalseにするかspellcheckを消します。--settingsなら、そのファイルを渡さずに起動します。
管理設定で有効にされている場合は、利用者側で切れません。ユーザー設定をfalseにしても、管理設定のブロックが優先されるためです。切りたい場合は、管理設定を配っている管理者に依頼することになります。
逆に、ユーザー設定でオンにしている人が1回だけ切りたいときは、enabledをfalseにした--settingsのファイルを渡す手があります。ユーザー設定のspellcheckより--settingsが上位なので、そのセッションだけオフになります。ただし管理設定がspellcheckを持っている環境では、この手は効きません。
どの場所を選ぶか
| やりたいこと | 置き場所 | 理由 |
|---|---|---|
| 自分のマシンで常に使う | 置き場所ユーザー設定 | 理由全プロジェクトで有効になる |
| 今日のセッションで試す | 置き場所--settings | 理由そのセッションだけで、後始末が不要 |
| 組織で揃える | 置き場所管理設定 | 理由全員に適用され、利用者は切れない |
| チームのリポジトリで揃える | 置き場所(不可) | 理由プロジェクト設定では無視される |
最後の行は、よく起きる取り違えです。リポジトリにコミットして配るつもりでも、受け取った側では何も起きません。
下線が出ないときの切り分け
設定を書いたのに何も出ないときは、まず優先順位を疑います。
- プロジェクト側の
.claude/settings.jsonや.claude/settings.local.jsonに書いていないか。ここは読まれません - より高い階層(管理設定や
--settings)に別のspellcheckブロックがないか。あれば、ユーザー設定のブロックは丸ごと無効 enabledがtrueか、checkerの名前が正しいか
次にチェッカー側を疑います。Claude Codeは、チェッカーを維持できなくなると黙って下線を出さなくなります。
- チェッカーが未インストール、または
checkerで指名したものが無い - チェッカーが2回続けて失敗した。1回目は再起動しますが、2回目で以後の検査をやめ、Claude Codeを再起動するまで戻りません
- 応答に15秒を超えることが3回あった。3回目以降は検査をやめます
原因の特定には--debugが使えます。
claude --debugスペルチェックを有効にした状態で単語を打つと、~/.claude/debug/<session-id>.txtに[spellcheck]で始まる行が出ます。起動したプログラム名、または探して見つからなかったプログラムの一覧が読めます。あとの行には、止まった理由が続きます。「辞書が無い」というエラーなら、languageで指定した辞書が入っていないか、languageを省略したのに既定の辞書が無い状態です。辞書を入れるか、手元にある辞書名をlanguageに書きます。
どの設定ファイルが読み込まれているかは、/statusで確認できます。ロード元を見れば、「自分のユーザー設定が上位に負けている」ケースがすぐ分かります。
Claudeに設定を書かせるときの頼み方
設定ファイルの編集をClaude Codeに任せるなら、書き込み先を指定します。「スペルチェックを有効にして」とだけ頼むと、プロジェクトの.claude/settings.jsonに書かれる可能性があります。そこでは無視されるので、次のように頼むと確実です。
~/.claude/settings.json に spellcheck を追加して。enabled は true、
checker は hunspell、language は en_GB。書いたあとに aspell/hunspell の
--version を実行して、PATH にあることも確認して。書き込み先を明示し、コマンドの実行結果まで読ませる形にしておけば、「書いたのに効かない」を後から探し回らずに済みます。.claude/settings.jsonにcommitされたspellcheckを見つけたら、それは効いていない設定です。ユーザー設定か管理設定へ移す候補になります。
「効く場所が限られるキー」は他にもある
spellcheckのように、プロジェクトの設定ファイルでは働かないキーは他にもあります。設定リファレンスでは、スコープが「User or managed」などと書かれたキーがその仲間です。どのキーがどこで効くかは、設定の索引にあるScope列で確認できます。
絵文字ショートコードやPrompt suggestionsとの違いは、入力欄の補助機能を比べた記事にあります。あちらのキーは「Any file」で、プロジェクト設定にも書けます。
機能の追加経緯はv2.1.235のリリースノートで読めます。
まとめ
spellcheckは、ユーザー設定・--settings・管理設定の3か所でだけ読まれます。プロジェクト側のファイルに書いても効きません。優先順位は管理設定、--settings、ユーザー設定の順で、ブロックは丸ごと1つだけが採用されます。
書き足しでの部分上書きはできないので、上書きするなら全フィールドを書きます。日本語の文は検査されず、対象になるのは混ざった英単語です。下線が出ないときは、書き込み先、上位の階層、チェッカーの状態の順で確認します。