CLAUDE_AX_PREPARK_MSでスクリーンリーダーの行送り待機を調整する
スクリーンリーダーモードの行送り待機を変える環境変数CLAUDE_AX_PREPARK_MS。v2.1.287で既定が50msから0に変わった経緯と、50を指定して戻す方法をまとめます。
Claude Codeのスクリーンリーダーモードで、新しい行や変更された行を書き込む前に待つ時間を決める環境変数がCLAUDE_AX_PREPARK_MSです。既定値はv2.1.287(2026年10月1日)で0に変わり、今は待たずに書き込みます。以前の挙動に戻したいときはCLAUDE_AX_PREPARK_MS=50を指定します。上限は5000ミリ秒、変数自体はv2.1.233以降で使えます。
古い解説に「既定は50ミリ秒」とあっても、v2.1.287以降には当てはまりません。まず自分のバージョンを確かめるところから始めます。
既定値が50から0に変わった — 自分の環境はどちらか
待機の既定値は、バージョンを境に次のように分かれます。
PREPARK_MSの既定値
v2.1.286以前
新しい行・変更された行を書く前に、カーソルを行頭に置いたまま50ミリ秒待ちます。何も設定しなくてもこの待機がかかります。
v2.1.287以降
待たずに書き込みます。待機を入れたいときだけ、CLAUDE_AX_PREPARK_MSに1以上の値を指定します。
バージョンはコマンドで確かめられます。手元のv2.1.289では、バージョン表示とスクリーンリーダー関連のフラグが次のように出ました。
claude --version
claude --help | grep -A3 "ax-screen-reader"2.1.289 (Claude Code)
--ax-screen-reader Render screen-reader friendly output
(flat text, no decorative borders or
animations).--ax-screen-readerは、そのセッションだけモードを有効にするフラグです。待機時間を変えるフラグは--helpに出ないため、時間は環境変数で指定します。
変更の出どころはchangelogのv2.1.287の項です。行頭で止まらずに書き込むようになったこと、止まる動作に戻すにはCLAUDE_AX_PREPARK_MS=50を設定することが書かれています。env-varsのリファレンスにも、既定は0で、v2.1.287より前は50だったと明記されています。
CLAUDE_AX_PREPARK_MSは何を決める変数か
スクリーンリーダーモードで、Claude Codeが新しい行や変更された行を書き込む前に、何ミリ秒待つかを決めます。アクセシビリティのページでは、待っている間はターミナルカーソルを現在の行の先頭に置いたままにする、と説明されています。
値は0から5000のミリ秒です。5000を超える値を渡しても、待機は5000で打ち切られます。この変数が使えるのはClaude Code v2.1.233以降です。
効くのはスクリーンリーダーモードが有効なセッションだけです。モードを有効にしないまま設定しても、変化はありません。非対話モード(-pフラグ)はモードの対象外なので、この変数も働きません。
入力行は別の扱いです。行末で文字を打ったりBackspaceを押したりすると、Claude Codeは変わった文字だけを書き込み、スクリーンリーダーはその文字だけを読み上げます。
起動からセッション中までの待機の流れ
スクリーンリーダーモードの待機は2か所にあります。起動時に1回だけ働くものと、行を書くたびに働くものです。
待機が働く順番
- 1
確認行が出る
起動直後に
[Screen Reader Mode: on via flag]のような行が出ます。末尾のflagは有効にした経路で、envとsettingsもあります。 - 2
最初の描画を止める
CLAUDE_AX_STARTUP_QUIET_MS(既定3000ミリ秒)の間、最初の画面の描画を止めます。キーを押すと途中で解除できます。 - 3
プロンプトが出る
待機が終わると最初のプロンプトが描画され、対話が始まります。
- 4
行を書くたびに待機がかかる
以降、新しい行や変更された行を書く前に
CLAUDE_AX_PREPARK_MSの待機が入ります。v2.1.287以降は、1以上を指定したときだけ待ちます。
値を変える場面
公式のenv-varsとaccessibilityの2ページには、50のほかに推奨値は載っていません。読み上げ速度や支援技術によって合う長さは変わるため、次の表のどの状況かを起点に決めます。
| 状況 | 設定 | 補足 |
|---|---|---|
| v2.1.287以降で、今の挙動に不満がない | 設定何もしない | 補足既定の0のまま使う |
| v2.1.286以前の「行頭で止まる」挙動が合っていた | 設定CLAUDE_AX_PREPARK_MS=50 | 補足changelogが戻し方として示している値 |
50でも足りない、または長すぎる | 設定50を起点に増減して試す | 補足範囲は0〜5000 |
| v2.1.233より古い | 設定使えない | 補足変数自体が要件を満たさない |
無限に待たせる設定はできません。
環境変数で設定する
最初にシェルで指定する方法です。macOSやLinuxでは次のとおりです。
export CLAUDE_AX_SCREEN_READER=1
export CLAUDE_AX_PREPARK_MS=50
claudeWindowsでスクリーンリーダー(NVDAなど)を使う場合は、シェルごとに書き方が変わります。PowerShellは次のとおりです。
$env:CLAUDE_AX_PREPARK_MS = "50"
claudeコマンドプロンプト(CMD)ではsetを使います。
set CLAUDE_AX_PREPARK_MS=50
claudeどちらもウィンドウを閉じると消えます。PowerShellで恒久化するなら[Environment]::SetEnvironmentVariable("CLAUDE_AX_PREPARK_MS", "50", "User")を実行し、新しいターミナルを開き直します。CMDならsetx CLAUDE_AX_PREPARK_MS 50が同じ役割です。$env:やsetによる代入は、成功しても何も表示しません。setxは保存できたことを示すメッセージを返します。設定できたかは、同じシェルで変数を表示して確かめます(PowerShellはecho $env:CLAUDE_AX_PREPARK_MS、CMDはecho %CLAUDE_AX_PREPARK_MS%)。
settings.jsonで恒久設定にする
毎回同じ値を使うなら、settings.jsonのenvキーに書きます。モード自体を常時有効にするaxScreenReaderも同じファイルに置けます。設定ファイル全般はClaude Codeの設定ファイル完全ガイドにまとまっています。
{
"axScreenReader": true,
"env": {
"CLAUDE_AX_PREPARK_MS": "50"
}
}置く場所で適用範囲が変わります。~/.claude/settings.jsonは自分のすべてのプロジェクト、.claude/settings.jsonはリポジトリで作業する全員、.claude/settings.local.jsonはそのプロジェクトの自分だけです。
envに書いた値は、シェルでexportした同名の変数を上書きします。例外は、Claude Desktopアプリやセルフホスト環境のランナーがセッションを始める場合です。このときは起動側が作った環境が優先され、envの値は無視されます。
ファイルを保存すると、実行中のセッションにも新しい値が反映されます。ただし、OpenTelemetryのように起動時に一度だけ読む機能は、再起動まで古い値のままです。反対に、envから変数を削除しても実行中のセッションでは解除されず、次にclaudeを起動したときに消えます。
モードを有効にする経路が複数あるときの優先順位は、--ax-screen-readerフラグ、CLAUDE_AX_SCREEN_READER、axScreenReaderの順です。CLAUDE_AX_SCREEN_READER=0にすると、設定がtrueでもモードを切れます。
他の待機系アクセシビリティ設定との違い
スクリーンリーダーモードの待機を調整する変数は、もう1つあります。カーソル表示を変える変数も並べて違いを見ます。
| 変数 | 働く場面 | 既定値 | 上限 | 要件 |
|---|---|---|---|---|
CLAUDE_AX_PREPARK_MS | 働く場面新規・変更行を書く前 | 既定値0(v2.1.286以前は50) | 上限5000ms | 要件v2.1.233以降 |
CLAUDE_AX_STARTUP_QUIET_MS | 働く場面起動確認行の直後 | 既定値3000ms | 上限600000ms(10分) | 要件v2.1.217以降 |
CLAUDE_CODE_ACCESSIBILITY | 働く場面待機ではなくカーソル表示 | 既定値未設定 | 上限なし | 要件なし |
CLAUDE_AX_STARTUP_QUIET_MSは、確認行をスクリーンリーダーが最後まで読めるよう、最初の描画を止める変数です。0にすると止めずに描画します。
CLAUDE_CODE_ACCESSIBILITYは待機時間の変数ではありません。1を設定すると、ネイティブのターミナルカーソルを表示したままにし、反転文字のカーソル表示をやめます。macOSのZoomのような拡大鏡がカーソル位置を追えるようにするための設定です。v2.1.218以降は、/configや/pluginのメニューで強調された行にもカーソルが付いてきます。スクリーンリーダーの代わりに拡大鏡を使う人向けの別の変数で、モードを有効にする必要はありません。
待機まわりの変更履歴
スクリーンリーダーモードは、changelogのv2.1.208の項で「追加された」と書かれています。一方、env-varsページのCLAUDE_AX_SCREEN_READERの行は、v2.1.181以降を要件としています。2つのページでバージョンが食い違うため、モードを使うならv2.1.208以降を目安にすると食い違いに当たりません。詳しい変更点はv2.1.208のリリースノートで追えます。
待機まわりの変更
- 2026年7月14日v2.1.208 スクリーンリーダーモードを追加
--ax-screen-reader、CLAUDE_AX_SCREEN_READER=1、axScreenReaderの3つの有効化方法が揃いました。 - 2026年7月21日v2.1.217 起動確認行の読み上げ待ちを追加
CLAUDE_AX_STARTUP_QUIET_MSの要件がこのバージョンです。確認行が最初の描画に切られる不具合の修正も入りました。 - 2026年8月14日v2.1.233 CLAUDE_AX_PREPARK_MSを追加
行を書く前の待機を変える変数の要件がこのバージョンです。当時の既定は50ミリ秒でした。v2.1.233のリリースノートに前後の変更があります。
- 2026年10月1日v2.1.287 既定値を0に変更
行頭で止まらずに書き込むのが既定になり、以前の挙動は
CLAUDE_AX_PREPARK_MS=50で戻す形になりました。
よくあるつまずき
- 設定したのに変わらないときは、起動直後の確認行を見ます。
[Screen Reader Mode: on via ...]が出ていなければ、モードが有効になっていません - v2.1.287以降で変数を設定していない場合、待機は
0です。以前と同じ間が欲しいなら50を明示します claude --versionがv2.1.233より古いと、この変数は使えません- SSHで使うときは、環境変数や設定を、手元のマシンではなく
claudeが動くリモート側に置きます
よくある質問
VS Codeの拡張機能でもCLAUDE_AX_PREPARK_MSは効きますか
拡張機能のチャットパネルには効きません。スクリーンリーダーモードが調整するのはターミナルの画面だけで、v2.1.236以降の拡張機能は設定なしで会話の進行をスクリーンリーダーに知らせます。VS Codeの統合ターミナルでclaudeを動かす場合は、ターミナルの利用なので対象になります。
まとめ
まず起動直後の確認行でモードが有効かを見て、読み上げに不満が残るときだけ値を入れます。入れるなら50が出発点です。応答が止まったときの待機は別の仕組みで、ストリーミング無応答のタイムアウト調整に書いています。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。