Skip to content

原文(日本語に翻訳)

自動検出で検知できないターミナル(例: Emacs の eat)で同期出力を強制有効化する CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 環境変数を追加しました。

原文(英語)

Added CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 env var to force-enable synchronized output on terminals that auto-detection misses (e.g. Emacs eat)

概要

Claude Code は通常、ターミナルの種類を自動検出して同期出力の有効・無効を判断しますが、一部の特殊なターミナルエミュレータでは検出に失敗することがあります。CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 を設定することで、自動検出に頼らず強制的に同期出力を有効化できます。Emacs の eat パッケージのような非標準ターミナルでの表示崩れを解消するのに役立ちます。

基本的な使い方

シェルの設定ファイル(.bashrc.zshrc など)に以下を追加します。

bash
export CLAUDE_CODE_FORCE_SYNC_OUTPUT=1

または、コマンド実行時に一時的に適用する場合は以下のようにします。

bash
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 claude

実践例

Emacs の eat ターミナルで使用する

Emacs の eat パッケージ内でClaude Codeを利用する場合、.emacs.d/init.el などで環境変数を設定します。

elisp
(setenv "CLAUDE_CODE_FORCE_SYNC_OUTPUT" "1")

または、シェルの設定ファイルに追記しておくことで、eat から起動した際も自動的に適用されます。

bash
# ~/.bashrc または ~/.zshrc
export CLAUDE_CODE_FORCE_SYNC_OUTPUT=1

tmux や screen などのターミナルマルチプレクサで使用する

自動検出が正しく機能しない場合に、明示的に有効化します。

bash
# tmux セッション内で実行
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 claude "このコードをレビューしてください"

direnv を使ってプロジェクトごとに設定する

.envrc ファイルに設定を追加することで、プロジェクト単位で有効化できます。

bash
# .envrc
export CLAUDE_CODE_FORCE_SYNC_OUTPUT=1

注意点

  • この環境変数は自動検出が失敗する場合のみ設定してください。通常のターミナルでは自動検出が正しく機能するため、不要な設定は避けることを推奨します。
  • 同期出力を強制有効化することで、まれに対応していないターミナルで予期しない表示問題が発生する可能性があります。
  • Emacs の eat パッケージ以外でも、カスタムターミナルエミュレータや非標準の端末環境で問題が発生した際に試す価値があります。

関連情報