disclaw/tasks/DIS-003.md

1.6 KiB

id status phase priority labels branch assignee started pr merged
DIS-003 ready 0 p0
phase:0
type:fix
priority:p0
security
phase-0/sanitize-env null null null null

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