修正:深いディレクトリの TMPDIR 設定でクロスセッションメッセージが失敗する問題
原文(日本語に翻訳)
CLAUDE_CODE_TMPDIR または $TMPDIR が深いディレクトリを指している場合にクロスセッションメッセージ(SendMessage)が無音で失敗する問題を修正しました。
原文(英語)
Fixed cross-session messaging (SendMessage) silently breaking when CLAUDE_CODE_TMPDIR or $TMPDIR points at a deep directory
概要
SendMessage ツールを使ったクロスセッションメッセージング機能は、内部的に一時ファイルを通じてセッション間の通信を行っています。CLAUDE_CODE_TMPDIR または $TMPDIR 環境変数が深いパス(パス長が長いディレクトリ)を指している場合、Unix ソケットのパス長制限(通常 108 文字)に引っかかり、無音で失敗していました。v2.1.162 でこの問題が修正されました。
基本的な使い方
bash
# 深いパスの TMPDIR を設定しても動作するようになった
export TMPDIR=/very/long/path/to/custom/temporary/directory/location
claude "セッション間でメッセージを送って"実践例
カスタム TMPDIR を使った環境での動作確認
bash
# 深いパスの TMPDIR でも動作するようになった
export CLAUDE_CODE_TMPDIR=/home/user/projects/my-project/.tmp/claude-code-temp
# SendMessage を使ったクロスセッション通信
claude "バックグラウンドセッションに進捗を送って"Docker/コンテナ環境での設定
dockerfile
# Dockerfile での設定
ENV TMPDIR=/workspace/tmp/claude
# または深いプロジェクトパス内でも動作
ENV CLAUDE_CODE_TMPDIR=/home/runner/work/project-name/project-name/.claude-tmpCI/CD パイプラインでの活用
yaml
# GitHub Actions での設定例
env:
CLAUDE_CODE_TMPDIR: ${{ github.workspace }}/.claude-tmp
steps:
- name: Create tmp dir
run: mkdir -p ${{ github.workspace }}/.claude-tmp
- name: Run Claude Code
run: claude "CI パイプラインのタスクを実行して"
# 修正後: 深いワークスペースパスでも動作する注意点
- この問題は Unix ソケットのパス長制限(108 文字)が原因でした
CLAUDE_CODE_TMPDIRが設定されていない場合は$TMPDIRが使用され、それもない場合はデフォルトの/tmpが使用されます- パスが非常に長い環境(例: Docker のネストしたワークスペース)では引き続き注意が必要な場合があります
- この修正により、長いパスの TMPDIR でも Socket のパスが短くなるよう自動的に処理されます