disclaw/tasks/DIS-003.md
Nick Tabeling 722d85c2a5
Some checks failed
CI / build-and-test (ubuntu-latest) (pull_request) Has been cancelled
CI / build-and-test (windows-latest) (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
chore: update task board — Phase 0 and Phase 1 marked done
All DIS-001 through DIS-110 set to status:done with merge dates.
BOARD.md reorganized with Done sections per phase.
Phase 1.5 Refinement epic added as planning placeholder.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 10:42:16 +02:00

44 lines
1.6 KiB
Markdown

---
id: DIS-003
status: done
phase: 0
priority: p0
labels: [phase:0, type:fix, priority:p0, security]
branch: phase-0/sanitize-env
assignee: claude-agent
started: null
pr: null
merged: 2026-04-08
---
# DIS-003: `sanitizedEnv()` — Secrets aus Child-Env entfernen
## Ziel
Kein Secret (`DISCORD_BOT_TOKEN` etc.) darf im Environment des `claude`-Kindprozesses landen.
Ein Agent kann heute per `echo $DISCORD_BOT_TOKEN` den Bot-Token exfiltrieren.
## Kontext
`src/agent/runner.ts` vererbt aktuell `process.env` vollständig.
`docs/development-plan.md` §2.6, `docs/ai-engineer-analyse.md` §4.
## Scope
- **In**: `src/runtime/env.ts`: `sanitizedEnv(extra?)` entfernt `DISCORD_BOT_TOKEN`, `DISCORD_CLIENT_SECRET`, Pattern `/^(SECRET_|TOKEN_|API_KEY_?)/i`, setzt `CI=true`, `DISCLAW_AGENT=1`, `DISCLAW_AGENT_NAME=<name>` · optionale `env_blocklist` via `disclaw.yaml` · `runner.ts` nutzt `sanitizedEnv` statt `process.env`
- **Out**: Whitelist-statt-Blacklist-Modus
## Definition of Done
- [ ] `sanitizedEnv()` ist pur, keine Seiteneffekte
- [ ] Unit-Test `tests/unit/sanitize-env.test.ts` deckt: Token entfernt, Pattern-Match, PATH/HOME bleiben, Extras überschreiben, `env_blocklist` wird angewendet
- [ ] Runner nutzt `sanitizedEnv` an allen Spawn-Stellen
- [ ] `npm run build && npm test` grün
## Dateien (erwartet)
- `src/runtime/env.ts`
- `src/agent/runner.ts`
- `src/config/loader.ts`
- `tests/unit/sanitize-env.test.ts`
## Abhängigkeiten
Keine. Kann parallel zu DIS-002 laufen (beide editieren `runner.ts` — bei Merge-Konflikt rebased DIS-003 auf DIS-002).
## Spec
`docs/backlog.md` #DIS-003