Mechanism: Negative Space
One-sentence definition
Negative space is the practice of naming what must stay unchanged — files, behaviors, APIs, and styles — so the agent’s freedom is shaped by explicit exclusions, not by whatever the model assumes is “fair game.”
The problem
You ask for a UI tweak. The agent “helpfully” updates the shared button component used in forty screens. You asked for one page; you got a design system migration. The missing instruction was not what to do — it was what not to do.
Positive prompts (“fix the health check”) leave huge default permission. Negative space fills the gaps: do not change shared components, do not alter public API signatures, do not migrate state management.
Symptoms:
- Shared modules change when the task was local
- Public APIs gain breaking fields “for consistency”
- Generated refactors in files you thought were frozen
- Reviews become debates about unstated assumptions
How it works
Negative space complements constraints. Constraints are the full guardrail set; negative space emphasizes preservation:
- Frozen paths —
src/legacy/read-only;packages/ui/Button.tsxoff limits - Frozen behavior — existing REST responses must stay byte-compatible
- Frozen process — no dependency upgrades, no license header sweeps
- Frozen style — match existing patterns; no new abstractions
Positive goal (what to achieve)
+
Negative space (what must not change)
│
▼
Smaller, safer solution spaceList negatives in plain language near the goal. The agent sees what is sacred, not just what is assigned.
When to use it
- Legacy modules, shared libraries, and generated code
- Hot paths where regression cost is high
- Any task adjacent to code you cannot afford to churn
- After an agent “helpfully” refactors something frozen once — add the negative line permanently to rules
When not to use it
- Greenfield files with no dependents — negatives add little
- When the task is the migration — then the goal must say migrate X, not smuggle it via silence
- Replacing a goal with only “don’t touch anything” — you need a positive outcome too
Failure modes
Only negatives — Wall of “don’t” with no achievable goal. Fix: Pair with goal symptom + verify.
Vague negative — “Don’t break anything.” Fix: Name files, APIs, or tests that must stay green.
Stale negatives — Frozen folder later becomes active work. Fix: Update rules when ownership changes.
Contradiction — Goal requires API change; negative says API frozen. Fix: Resolve in planning; one must give.
Hidden negatives — Team knows Button.tsx is sacred; agent does not. Fix: Put standing negatives in project rules.
Minimal example
Context: Health endpoint fix must not touch shared middleware or Docker.
Steps:
- Extend the prompt block:
Goal: GET /health returns { "ok": true } after startup. [verify line]
Negative space (do not change):
- src/middleware/** (shared across routes)
- Dockerfile, docker-compose*, CI workflows
- Public API routes other than /health response body
- Package.json / lockfile- If the agent proposes middleware changes, reject: “Violates negative space — find a fix in bootstrap or health only.”
- Add recurring negatives to
.cursor/rulesif this keeps happening.
Done when: Verify passes and frozen paths have zero diff hunks.
Tool instances (optional deep-dive)
Portable idea above; this section is tool-specific. Date: June 2026.
Cursor
- Negative space in rules — standing list of frozen paths for the repo.
.cursorignore— hard exclude for paths that must never be edited by agent indexing.- Diff review — reject any hunk touching negative-space paths before checkpoint.
- Distinction from constraints: constraints include do-not actions globally; negative space names specific preserved surfaces.
Other tools
CODEOWNERS on frozen paths, linter no-edit zones, Aider CONVENTIONS.md “sacred files” section — portable pattern.
Related mechanisms
- Constraints / guardrails — broader limit set including negatives
- Scope fence — session boundary; negative space defines sacred interior
- Goal — positive target negatives protect while reaching
Try it yourself
Exercise: List three frozen items for your next agent task — one path, one behavior, one process rule. Add them under a Negative space: header in the prompt.
You need: One upcoming task; two minutes
Done when: A teammate reading only your prompt would know what is off limits without oral tradition.

