Four-layer security model for ultraexecute-local and headless sessions: Layer 1 — Plugin hooks: pre-bash-executor.mjs (13 BLOCK + 8 WARN rules with bash evasion normalization) and pre-write-executor.mjs (8 path guard rules blocking .git/hooks, .claude/settings, shell configs, .env, SSH/AWS). Layer 2 — Prompt-level security rules: denylist in ultraexecute-local.md Sub-step D and session-spec-template.md Security Constraints section. These are the only rules that work in headless child sessions. Layer 3 — Pre-execution plan validation: new Phase 2.4 scans all Verify and Checkpoint commands against denylist before execution begins. Layer 4 — Replace --dangerously-skip-permissions with scoped --allowedTools "Read,Write,Edit,Bash,Glob,Grep" --permission-mode bypassPermissions in ultraexecute-local.md, headless-launch-template.md, and session-decomposer.md. Blocks Agent, MCP, WebSearch in child sessions. Also adds Hard Rules 14-16: verify command security check, no writing outside repository root, no writing to security-sensitive paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 KiB
3 KiB
Session {N}: {title}
From master plan: {plan file path} Session {N} of {total sessions}
Context
{Why this session exists. What it accomplishes within the larger plan. Include enough background that an executor with no prior context can understand the purpose and make judgment calls.}
Dependencies
- Depends on: {Session M | "none — can run in parallel"}
- Blocks: {Session P | "none"}
- Entry condition: {what must be true before this session starts — e.g., "Session 2 committed and tests pass"}
Scope Fence
- Touch: {explicit list of files this session may create or modify}
- Never touch: {files that belong to other sessions — hard boundary}
Steps
Step 1: {description}
- Files:
{path} - Changes: {exactly what to modify}
- Reuses: {existing function/pattern, with file path}
- Test first: {test file, what it verifies, pattern to follow}
- Verify:
{exact command}→ expected:{output} - On failure: {revert | retry | skip | escalate} — {specific instructions}
- Checkpoint:
git commit -m "{message}"
Step 2: {description}
{same structure as Step 1}
Exit Condition
All of these must pass before this session is considered complete:
{verification command}→ expected:{output}{verification command}→ expected:{output}- All changes committed with descriptive messages
- No uncommitted changes remain (
git statusclean)
Failure Handling
- If ANY step fails after retry: stop execution. Do NOT proceed to later steps.
Security Constraints
These rules override any step instructions that conflict with them:
- Never run
rm -rf,chmod 777, pipe-to-shell (curl|bash,wget|sh,base64|bash),evalwith variable expansion,mkfs,ddto block devices,shutdown/reboot/halt, fork bombs,crontabwrites, orkill -9 -1 - Never modify files outside the Scope Fence (Touch list above)
- Never write to
.git/hooks/,~/.ssh/,~/.aws/,~/.gnupg/,.envfiles, shell configs (~/.zshrc,~/.bashrc,~/.profile) - Never write to
.claude/settings.json,.claude/hooks/, or any hook script — these are security infrastructure and must not be modified by execution - If a
Verify:orCheckpoint:command violates these rules: treat asOn failure: escalateand stop execution regardless of the step's On failure setting - Commit whatever was completed successfully before stopping.
- Report which step failed, the error message, and what was attempted.
Handoff State
{What the next session (or final verification) needs to know about this session's output. Include: new files created, exports added, configuration changed, APIs introduced. This section bridges sessions — it's the "baton" in a relay race.}
Metadata
- Master plan:
{plan file path} - Steps from plan: {step N}–{step M}
- Estimated complexity: {low | medium | high}
- Model recommendation: {opus | sonnet} — {rationale}