Skip to content

原文(日本語に翻訳)

ユーザーごとの正しい一時ディレクトリを使用することで、macOS でサンドボックス使用時に一時ファイルを書き込む際に発生していた「operation not permitted」エラーを修正(anthropics/claude-code#21654)

原文(英語)

Fixed sandbox "operation not permitted" errors when writing temporary files on macOS by using the correct per-user temp directory (anthropics/claude-code#21654)

概要

macOS 環境でサンドボックスモードを有効にしている場合に、一時ファイルの書き込み時に「operation not permitted」エラーが発生する問題が修正されました。原因は、Claude Code がシステム共通の一時ディレクトリ(/tmp)を使用していたのに対し、macOS のサンドボックスはユーザーごとの一時ディレクトリ(/var/folders/...)へのアクセスしか許可しないためでした。修正後は正しいユーザーごとの一時ディレクトリを使用するよう変更されました。

基本的な使い方

この修正はバグフィックスのため、特別な操作は不要です。Claude Code を 2.1.45 以上にアップデートするだけで適用されます。

bash
# Claude Code をアップデート
npm update -g @anthropic-ai/claude-code

# バージョン確認
claude --version

実践例

macOS でのサンドボックスモード確認

macOS でサンドボックスが有効になっているかを確認する方法:

bash
# Claude Code の設定でサンドボックスを確認
cat ~/.claude/settings.json | grep sandbox

または Claude Code の設定ファイルで確認:

json
{
  "sandbox": true
}

ユーザーごとの一時ディレクトリについて

macOS では /tmp はシンボリックリンクであり、実際の一時ディレクトリはユーザーごとに異なります:

bash
# macOS でのユーザー一時ディレクトリを確認
echo $TMPDIR
# 例: /var/folders/xx/xxxxxxxxx/T/

# または getconf コマンドで確認
getconf DARWIN_USER_TEMP_DIR

この修正により、Claude Code は $TMPDIR 環境変数が示す正しいパスを使用するようになりました。

修正前後の動作確認

bash
# 修正前(2.1.44 以前): サンドボックス有効時にエラーが発生
# operation not permitted: /tmp/claude-XXXXX

# 修正後(2.1.45 以降): 正しいパスを使用
# 例: /var/folders/xx/xxxxxxx/T/claude-XXXXX

注意点

  • この問題は macOS のサンドボックスモード有効時のみ発生していました。Linux や Windows、またはサンドボックス無効時は影響を受けません。
  • macOS Ventura 以降でサンドボックス制限が強化されたため、この問題が顕在化していました。
  • Claude Code 2.1.45 以上にアップデートすれば自動的に修正が適用されます。追加の設定変更は不要です。

関連情報