docs: update meta files for Rust-side CLAUDE* env var stripping

- .claude/CLAUDE.md: document dual-layer env var stripping (Rust + JS)
- docs/progress.md: add session entry for Rust-side stripping
- docs/task_plan.md: add CLAUDE* env var leak to errors table
- CHANGELOG.md: add fix entry under Unreleased
- .gitignore: exclude debug/, plugins/, projects/ (Claude Code working dirs)
This commit is contained in:
Hibryda 2026-03-07 01:15:10 +01:00
parent a3d9933221
commit 14b62da729
5 changed files with 16 additions and 1 deletions

View file

@ -401,6 +401,14 @@ Design: No separate sidecar process per subagent. Parent's sidecar handles all;
- [x] Error message now includes runtime availability note when neither deno nor node found
- [x] agent-runner-deno.ts file retained in repo for reference but no longer used by SidecarManager
### Session: 2026-03-07 (continued) — Rust-Side CLAUDE* Env Var Stripping
#### Dual-Layer Env Var Stripping
- [x] Added CLAUDE* env var stripping in Rust SidecarManager (bterminal-core/src/sidecar.rs)
- [x] Uses env_clear() + envs(clean_env) on Command to strip all CLAUDE-prefixed vars before spawning sidecar process
- [x] This is the primary defense — ensures no CLAUDE* vars reach the sidecar regardless of JS runtime
- [x] JS-side stripping (agent-runner.ts/agent-runner-deno.ts via SDK `env` option) retained as defense-in-depth
### Next Steps
- [ ] Real-world relay testing (2 machines)
- [ ] TLS/certificate pinning for relay connections

View file

@ -188,4 +188,5 @@ See [phases.md](phases.md) for the full phased implementation plan.
|---|---|---|---|
| Blank screen, "rune_outside_svelte" runtime error | Store files used `.ts` extension but contain Svelte 5 `$state`/`$derived` runes. Runes only work in `.svelte` and `.svelte.ts` files. Compiler silently passes but fails at runtime. | Renamed stores to `.svelte.ts`, updated all import paths to use `.svelte` suffix | 2026-03-06 |
| Agent sessions produce no output (silent hang) | Claude CLI v2.1.69 hangs when spawned via child_process.spawn() with piped stdio. Known bug: github.com/anthropics/claude-code/issues/6775 | Migrated sidecar from raw CLI spawning to `@anthropic-ai/claude-agent-sdk` query() function. SDK handles subprocess management internally. | 2026-03-06 |
| CLAUDE* env vars leak to sidecar | When BTerminal launched from Claude Code terminal, CLAUDE* env vars trigger nesting detection in sidecar | Dual-layer stripping: Rust SidecarManager uses env_clear()+envs(clean_env) before spawn (primary), JS runner strips via SDK env option (defense-in-depth) | 2026-03-07 |
| Running agents killed on pane remount | AgentPane.svelte onDestroy called stopAgent() on component unmount, including layout changes and remounts — not just explicit close. | Removed onDestroy from AgentPane. Moved stop-on-close to TilingGrid onClose handler which only fires on explicit user action. | 2026-03-06 |