What is a harness. What is a session harness.
Not Rest Inc. · Session Harness · 2 of 8 · Scaffolding, not a chat
A harness is the scaffolding a working session runs inside. Not the model, not the editor: the frame around the work. Discipline anchored at the start, laws enforced by hooks, an estate that writes itself, and continuity from one session to the next.
text version
notrest — a session harness for Claude Code and Codex The scaffolding a working session runs inside: discipline anchored at start, laws enforced by hooks, an estate that writes itself, continuity across sessions — and since 4.7: it learns as it works and compiles what it repeats. v4.7.1 · 32 skills · 11 lifecycle hooks · Not Rest Inc.
A session is not a chat
A chat is a transcript that ends. A session is a loop that leaves a trail — it starts from a packet, works under gates, and stops by banking what it did, so the next session begins by reading what this one wrote.
text version
A session is not a chat. It is a loop that leaves a trail.
┌──────────┐ ┌──────────┐ ┌──────────┐
│ START │ ──► │ WORK │ ──► │ STOP │
│ (packet) │ │ (gated) │ │ (banked) │
└──────────┘ └──────────┘ └──────────┘
▲ │
└──────── the next session ────────┘
reads what this one wrote
Three promises: it starts knowing, it cannot break the laws
silently, and it can die at any minute without losing work.
That picture carries the three promises the whole thing exists to keep: it starts knowing, it cannot break the laws silently, and it can die at any minute without losing work. Every stop further along this walk is one of those three, made mechanical.
Three layers, because intentions are not enough
Written text can be ignored, so the harness never relies on it alone. The same rule is written where the model reads it, measured by a script whose exit code is the whole answer, and enforced by a hook the CLI runs on its own events — a hook the model does not get to skip.
text version
┌─────────────────────────────────────────────────────┐ │ SKILL.md text the model reads it when invoked │ ← judgment ├─────────────────────────────────────────────────────┤ │ scripts/*.py run by the model or by hand, │ ← zero tokens │ exit code = the answer │ ├─────────────────────────────────────────────────────┤ │ hooks/*.sh run by the CLI on events, │ ← enforcement │ the model cannot skip them │ └─────────────────────────────────────────────────────┘ Text persuades. Scripts measure. Hooks enforce. A law lives in all three or it is only a wish.
Text persuades. Scripts measure. Hooks enforce. A law living in only one of the three is a wish — and the next stop is what that costs.