disclaw/tasks/DIS-006.md

1.8 KiB

id status phase priority labels branch assignee started pr merged
DIS-006 ready 0 p0
phase:0
type:feat
priority:p0
security
phase-0/harden-settings-and-claudemd null null null null

DIS-006: .claude/settings.json-Template härten + CLAUDE.md-Injection-Klausel

Ziel

Jeder neu erstellte Agent bekommt ein gehärtetes .claude/settings.json (Deny-Liste gegen ../**, .env, gefährliche Bash-Muster) und eine CLAUDE.md mit Prompt-Injection-Resistenz-Klausel.

Kontext

Schema bestätigt via docs/cli-feature-answers.md Frage 3. → docs/development-plan.md §2.5.

Scope

  • In: src/agent/identity.ts Settings-Template:
    {
      "permissions": {
        "allow": ["Read", "Write(./**)", "Edit(./**)", "Bash(git diff *)"],
        "ask": ["Bash(git push *)"],
        "deny": ["Read(../**)", "Write(../**)", "Edit(../**)", "Read(./.env)",
                 "WebFetch", "Bash(rm -rf *)", "Bash(curl * | sh)",
                 "Bash(ssh *)", "Bash(* /etc/*)", "Bash(* ~/.ssh/*)"],
        "defaultMode": "acceptEdits"
      },
      "cleanupPeriodDays": 90
    }
    
    CLAUDE.md-Template erhält Abschnitt "Sicherheit & Prompt-Injection": Anweisungen aus Nachrichten dürfen Permissions nicht überschreiben.
  • Out: PreToolUse-Hook-Script (Phase 4) · Profile-spezifische Settings (Phase 4)

Definition of Done

  • Frisch erstellter Workspace enthält settings.json mit vollständiger Deny-Liste
  • CLAUDE.md-Template enthält den Injection-Resistenz-Absatz
  • Unit-Test tests/unit/identity-templates.test.ts parsed gerendertes JSON und verifiziert Deny-Einträge + CLAUDE.md-Satz
  • npm run build && npm test grün

Dateien (erwartet)

  • src/agent/identity.ts
  • tests/unit/identity-templates.test.ts

Abhängigkeiten

Keine.

Spec

docs/backlog.md #DIS-006