What
A new environment variable that wraps every Claude Code process launch through a custom launcher binary. All background sessions, daemon-spawned sessions, and self-exec restarts will be run through the configured wrapper.
Usage
# Point at an absolute path to your launcher script
export CLAUDE_CODE_PROCESS_WRAPPER="/usr/local/bin/my-launcher"
# Or pass as a JSON array for launchers with fixed arguments
export CLAUDE_CODE_PROCESS_WRAPPER='["/usr/local/bin/my-launcher", "--profile", "claude"]'Details
- Must be an absolute path (bare names resolved via PATH are not accepted)
- On Windows, the wrapper is not supported — sessions run unwrapped and a warning is logged
- The launcher must exec into Claude Code rather than daemonize; a launcher that daemonizes is detected and rejected
- If the configured launcher path is deleted or becomes non-executable, new background sessions are refused rather than started unwrapped
- Project-scoped settings files (
.claude/settings.jsonand.claude/settings.local.json) cannot configureCLAUDE_CODE_PROCESS_WRAPPER; it must be in user settings or managed settings - Run
claude statusto see the current wrapper configuration and any errors
Evidence
New CLAUDE_CODE_PROCESS_WRAPPER constant (search for "CLAUDE_CODE_PROCESS_WRAPPER")
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
One source agreesOne thing we can check says the same as this entry.
Anthropic's release notes agree
Added CLAUDE_CODE_PROCESS_WRAPPER: agent view and the background service now honor a corporate launcher by running every Claude Code…