docs(spawn): document claudecode env sanitization behavior

- note delegation compatibility with Claude nested-session guard

- document CLAUDECODE sanitization invariant in code standards

Refs #588
This commit is contained in:
Tam Nhu Tran
2026-02-20 23:01:21 +07:00
parent 80a84edf1f
commit f2ffb815ab
2 changed files with 13 additions and 0 deletions
+4
View File
@@ -193,6 +193,8 @@ Detailed guide: [`docs/cursor-integration.md`](./docs/cursor-integration.md)
Run multiple terminals with different providers:
> Delegation compatibility: when CCS spawns child Claude sessions, it strips the `CLAUDECODE` guard variable to avoid nested-session blocking in Claude Code v2.1.39+.
```bash
# Terminal 1: Planning (Claude Pro)
ccs work "design the authentication system"
@@ -283,6 +285,8 @@ export CCS_CLAUDE_PATH="/path/to/claude" # Unix
$env:CCS_CLAUDE_PATH = "D:\Tools\Claude\claude.exe" # Windows
```
CCS sanitizes child Claude spawn environments by stripping `CLAUDECODE` (case-insensitive) to prevent nested-session guard failures during delegation. `CCS_CLAUDE_PATH` is still respected after this sanitization step.
</details>
<details>
+9
View File
@@ -429,6 +429,15 @@ if (needsShell) {
This pattern is used in both `ClaudeAdapter` and `DroidAdapter` to ensure cross-platform consistency.
For all Claude child-process launches (delegation, adapters, proxies, helper spawners), sanitize env before spawn:
```typescript
const cleanEnv = stripClaudeCodeEnv(mergedEnv); // case-insensitive remove of CLAUDECODE
spawn(binaryPath, args, { env: cleanEnv, stdio: 'inherit' });
```
This prevents Claude Code nested-session guard failures when CCS runs inside parent Claude sessions.
---
## React Component Standards (UI)