Claude Code: CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR で、cd したあとも次のコマンドを元のフォルダから実行させる
Bash ツールで cd すると、その後のコマンドも移動先で動く。この環境変数を入れると、メインセッションの Bash/PowerShell は毎回元の作業フォルダに戻ってから次のコマンドを実行する。
どんな時に使う?
- モノレポで
cd packages/api && npm testのあと、ルートで打つつもりのnpm run lintがpackages/apiで走ってしまう - 相対パスで書いた後続コマンドが、いつの間にか別の場所を指していて事故になる
- 「いまどこにいるか」を毎回
pwdで確かめさせる手間を省きたい
設定
シェルで起動時に渡すか、settings.json の env に書く。
bash
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1 claudejson
{
"env": {
"CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "1"
}
}仕様のポイント
- 環境変数リファレンスの説明は「メインセッションの Bash/PowerShell コマンドのあと、元の作業フォルダに戻る」
- 対象はメインセッションだけ(@oswrav の注記どおり)。サブエージェントの挙動を当てにしない
- 1つのコマンドの中での
cd(cd sub && make)はそのまま効く。戻るのはコマンドが終わったあと
注意点
- わざと移動先で続けたい作業(サブフォルダで何度もビルドする等)では、毎回
cdを書かせるか、そのフォルダで Claude Code を起動し直す - 作業フォルダの外への書き込み制限とは別の設定。範囲を絞りたいなら Claude Code: 作業フォルダの外への書き込みは blockWritesOutsideWorkingDirectories で止める(Bash は別に対策) などを参照
出典
- @oswrav · 2026-11-08
- Claude Code ドキュメント(Environment variables): code.claude.com
- Claude Code CHANGELOG(変数の追加): github.com