# Freeze

> Block Edit and Write outside one directory for the session to contain debugging or parallel agents. Triggers "freeze edits", "restrict edits to", "only edit this folder", "unfreeze".

- Skill: `darkroomengineering/freeze` (Agent Skill)
- Install (CLI): `npx skillmds@latest add darkroomengineering/freeze`
- Raw SKILL.md: https://api.skillmd.com/api/skills/darkroomengineering/freeze/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: darkroomengineering (https://skillmd.com/u/darkroomengineering)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/darkroomengineering/freeze

---


# Freeze: Lock Edits to a Directory

## Standalone Codex: unsupported

Stop here in standalone Codex. The plugin does not install a freeze guard for
`apply_patch`, so this skill cannot enforce an edit boundary. Do not write
freeze state or claim a directory is locked. Tell the user the operation is
unsupported and use explicit file ownership as a convention only if they want
to continue without enforcement.

The remaining workflow is Claude-only.

Restrict `Edit` and `Write` to a single directory. Any edit targeting a file outside the boundary is **blocked** by the `freeze-guard` PreToolUse hook. State persists per session in `~/.claude/tmp/freeze-<sha256(sessionId)>.json`; setting, checking, or clearing one session's boundary leaves other sessions untouched. Legacy `freeze.json` state without a session tag is still honored when no session record exists. Legacy state tagged to another session is ignored without deleting it.

Note: notebook edits (`NotebookEdit`) and shell writes (`Bash`) are not gated — the boundary covers the file-editing tools only.

## Set the boundary

If the user named a directory, use it. Otherwise ask which directory to lock to (AskUserQuestion, free-text path). Then run, substituting the chosen path for PATH:

```bash
bun ~/.claude/src/scripts/freeze.ts set "PATH"
```

Confirm to the user that edits are now restricted to that path, and that they can lift it any time with "unfreeze".

## Lift the boundary

```bash
bun ~/.claude/src/scripts/freeze.ts off
```

## Check current state

```bash
bun ~/.claude/src/scripts/freeze.ts status
```

