Merge pull request #485 from jknair/fix/strip-claudecode-env-from-child-processes
fix(adapter-utils): strip Claude Code env vars from child processes
This commit is contained in:
@@ -272,7 +272,24 @@ export async function runChildProcess(
|
|||||||
const onLogError = opts.onLogError ?? ((err, id, msg) => console.warn({ err, runId: id }, msg));
|
const onLogError = opts.onLogError ?? ((err, id, msg) => console.warn({ err, runId: id }, msg));
|
||||||
|
|
||||||
return new Promise<RunProcessResult>((resolve, reject) => {
|
return new Promise<RunProcessResult>((resolve, reject) => {
|
||||||
const mergedEnv = ensurePathInEnv({ ...process.env, ...opts.env });
|
const rawMerged: NodeJS.ProcessEnv = { ...process.env, ...opts.env };
|
||||||
|
|
||||||
|
// Strip Claude Code nesting-guard env vars so spawned `claude` processes
|
||||||
|
// don't refuse to start with "cannot be launched inside another session".
|
||||||
|
// These vars leak in when the Paperclip server itself is started from
|
||||||
|
// within a Claude Code session (e.g. `npx paperclipai run` in a terminal
|
||||||
|
// owned by Claude Code) or when cron inherits a contaminated shell env.
|
||||||
|
const CLAUDE_CODE_NESTING_VARS = [
|
||||||
|
"CLAUDECODE",
|
||||||
|
"CLAUDE_CODE_ENTRYPOINT",
|
||||||
|
"CLAUDE_CODE_SESSION",
|
||||||
|
"CLAUDE_CODE_PARENT_SESSION",
|
||||||
|
] as const;
|
||||||
|
for (const key of CLAUDE_CODE_NESTING_VARS) {
|
||||||
|
delete rawMerged[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
const mergedEnv = ensurePathInEnv(rawMerged);
|
||||||
void resolveSpawnTarget(command, args, opts.cwd, mergedEnv)
|
void resolveSpawnTarget(command, args, opts.cwd, mergedEnv)
|
||||||
.then((target) => {
|
.then((target) => {
|
||||||
const child = spawn(target.command, target.args, {
|
const child = spawn(target.command, target.args, {
|
||||||
|
|||||||
Reference in New Issue
Block a user