“our code leaves the machine”
Name the boundary
Code can reach the model provider. The allowlist limits destinations. Listed destinations receive the data the agent sends.
Engineering with agents
Using agentic systems in everyday engineering work.
Part I
Part I — See it work
Part I — See it work
A model is a frozen set of numbers. Each message you send starts a turn, and every request in it resends the history.
Part I — See it work
The model sees one context window, and it fills up.
Part I — See it work
Agents can use tools.
Give the model tools, and it can act, and then run checks on its own work.
Part I — See it work
LIVE · the one-screen agent runs against any OpenAI-compatible local server · uv run --with requests harness_skeleton.py
Part I — See it work
It is not a feature to integrate. It is a tool you operate.
Part I — See it work
LIVE · open the result one 51 KB file · zero network requests · and it is yours
Part I — See it work
LIVE · ask two models to build it again
one prompt, two sessions · recorded above
Part I — See it work
A working audio deck.
That was the complete prompt. One HTML file contains

Part I — See it work
Part I — See it work
"Life before The Claude™: building was capital-intense, you had to predict the future, experimentation was expensive."
Part I — See it work
A harness is a deterministic envelope around the model: Claude Code, Cursor, opencode etc.
Docs: Claude Code · Cursor · opencode
Part I — See it work
One question, several agents.
LIVE · launch the fan-out recorded: agent teams in tmux · click the recording to enlarge

Part I — See it work
The agent drives a real browser.
LIVE · the agent drives the spacetime app in Chrome
recorded: Claude in Chrome runs this prompt · recorded: it types and formats a letter from Rivendell in Word
This slide deck was validated the same way: Claude Code and Codex both drove a browser through the slides at two projector sizes and reported what clipped and what needed work (validate/astra.sh in html-slides, the deck engine).
Part II
You saw one agentic loop, its tools, and a stop condition.
Now let's look at what lies underneath.
Part II — How it works
Part II — How it works
The model doesn't actually work with characters or words.
see OpenAI tokenizer · check this GIF recording here
Part II — How it works
Each token reads itself and every earlier token.
Part II — How it works
What the model receives when you press Enter.
/v1/chat/completions. Then the connection closesSource: public/demo/harness_skeleton.py · the chat window sends the same JSON without the tools key
Part II — How it works
Same loop around the model, more machinery inside.
Stage III, in daily use: Claude Code · Codex · Gemini CLI · opencode · pi · Antigravity · Cursor · Zed
Part II — How it works
The line keeps moving outward: from the prompt, to the session tooling, to everything around it.
Part II — How it works
Counts from the header of gemma-4-12B-it-Q4_K_M.gguf.
Papers: Attention Is All You Need (Google, 2017) introduced the design · Improving Language Understanding by Generative Pre-Training (OpenAI, 2018) named it GPT
Part II — How it works
So where do the numbers come from? And how do 11.9 billion of them fit in 7.4 GB?
Counts read from the header of gemma-4-12B-it-Q4_K_M.gguf with the gguf Python reader. 23.8 GB is 11.9 billion numbers at 16 bits.
Part II — How it works
Guess the next word, compare with the real one, nudge the numbers. Then teach it to answer.
Reading: Post-training methods (Red Hat) · LLM post-training primer (PyTorch)
Part II — How it works
Part II — How it works
The harness checks every tool call.
LIVE · the schemas in the one-screen agent
tool_use in Claude Code, function_call in Codex, one common interface in opencodeThe model never touches your shell. It sends a tool call. The harness reads it, validates it, asks your permission, and makes the system call. Most of the walls in this talk stand on that boundary.
Part II — How it works
The files on your disk.
Instructions are files. Capabilities are files. You can review them, put them in version control, and own them. The real ~/.claude listing
Part II — How it works
You probably heard these terms at one point, see the example below: five live inside the request, three in the harness around it.
Part II — How it works
The same loop, as a mature product. Every feature is one line of the loop you typed.
A hook is one if before the tool runs. A skill is a file added to messages when needed. Docs: system prompt · tool catalog · permissions · context management · hooks · skills · subagents · the loop, read from the product: Claude Code, reverse-engineered
Part II — How it works
The context window fills up. A summary replaces the history, and the detail goes with it.
Sources: Claude models · GPT-6.1 Sol · fetched 2026-10-20
Part II — How it works
Three ways to be wrong, and the sampler cannot tell them apart.
LIVE · local gemma4 fabricates three papers recorded · click to enlarge
Part II — How it works
LIVE · dummy .env and blocked egress RECORDED · the rule, then the cage
Part II — How it works
Allow, ask, deny.
A denial is not a failure. A good agent moves to permitted sources. It returns its work in the reply, and it reports the checks it could not run.
Part II — How it works
Walls the OS enforces.
A denied write means the system is working.
Part II — How it works
Where bytes may go.
LIVE · blocked curl, one allowlist line, rerun
Part II — How it works
Your code between the steps.
Thirty-three hook events in the docs as of October 2026, from SessionStart to SessionEnd. Start with one guard. Add the next one after a failure shows the need.
Part II — How it works
One loop, so one set of moments. Each harness names them differently.
| Claude Code | Codex CLI | OpenCode | pi | |
|---|---|---|---|---|
| session starts | SessionStart | SessionStart | session.created | session_start |
| prompt submitted | UserPromptSubmit | UserPromptSubmit | none | input · before_agent_start |
| permission decided | PermissionRequest | PermissionRequest | permission.asked · permission.replied | tool_call · block: true |
| before a tool runs | PreToolUse | PreToolUse | tool.execute.before · throw | tool_call |
| after a tool runs | PostToolUse · PostToolUseFailure | PostToolUse | tool.execute.after | tool_result |
| compaction | PreCompact · PostCompact | PreCompact · PostCompact | experimental.session.compacting · session.compacted | session_before_compact · session_compact |
| the agent stops | Stop | Stop · Interrupt | session.idle | agent_settled |
| session ends | SessionEnd | SessionEnd | none | session_shutdown |
Read from each tool's own reference on 19 October 2026: Claude Code hooks · Codex 0.163 hooks source · OpenCode plugins · pi extensions. none: no event in the docs.
Part II — How it works
LIVE · ask for rm -rf in a throwaway clone
Part II — How it works
The same controls on a different harness. Line for line.
Any OpenAI-compatible endpoint is one provider entry, which is how a local LM Studio or Ollama server plugs in. Instructions live in AGENTS.md. Docs: opencode.ai/docs · providers · permissions · plugins
Part II — How it works
Telemetry records what happened. The walls above it do the stopping. To audit a cage, name what enforces each limit: the kernel, a hook, a deny rule, or only a sentence.
Part III
You can now define seven terms: harness, tool call, permission, sandbox, egress, hook, and compaction. Now we use them.
Part III — Make it work
Part III — Make it work
One small verified change is better than one large impressive change. Every pattern on this slide works the same way for everyone here.
Part III — Make it work
Part III — Make it work
Part III — Make it work
The verification effort follows the stakes. Put each piece of code on this line first. Then decide how much of the funnel it gets.
Part III — Make it work
Part III — Make it work
A failure mode to audit for: an always-loaded instruction names a scanner that does not exist. The model follows it in every session and has no reason to report it. Only a human audit of the file finds it. A live review thread, agent-run: runedeck/skeleton#1.
Part III — Make it work
Each finding is a proposal until a person checks it.
Illustrative. No recorded run stands behind this figure: the defects are planted, and the checks are plain Python a person runs.
Run the same read-only review on your next PR: codex exec --sandbox read-only
Part III — Make it work
Models tend to be agreeable. They might need a push to become adversarial.
Part III — Make it work
The smallest unit of verification. Apply this check to each finding and to the fan-out results next. Source: NASA, July 20, 1969: One Giant Leap For Mankind
Part III — Make it work
The results are in, from the run we launched on the first Fan-out slide.
LIVE · back to the fan-out session
Apply the claim, source, and verdict check to the synthesis. Separate sessions can catch different errors. Agreement still needs a check against a source.
Part III — Make it work
Part III — Make it work
Every request sends your context to whoever runs the model.
| Where the model runs | Trains on it | Keeps it | Where it runs |
|---|---|---|---|
| Anthropic API, Claude for Work | no, by default | deleted within 30 days · zero retention by agreement | global, or US only |
| Claude Free, Pro, Max, with Claude Code | only if you allow it | consumer terms · no zero retention | global |
| OpenAI API and business plans | no, by default | up to 30 days for abuse checks · zero retention on request | EU processing for eligible customers |
| A local model | no | your disk | your machine |
Web tools run on the provider's side too. WebSearch and the API web fetch run on Anthropic's servers, Codex web search is hosted by OpenAI, and Claude Code's WebFetch sends each page through a model call. None of them reads your sandbox allowlist.
Sources, read 21 Oct 2026: Anthropic training · Anthropic retention · Anthropic regions · Claude consumer plans · OpenAI enterprise privacy · OpenAI data controls · Claude Code web tools · API web fetch · Codex web search
Part III — Make it work






Measure, reduce, route, cross-check, and guard. The project link is below each card. Each one installs in minutes.
Part III — Make it work



The editor is a matter of comfort. The harness below it is the same machinery.
Part III — Make it work
One documented minimal setup that works is better than ten clever setups that might work. A tmux configuration that fails, and we repair it here.
Part III — Make it work
The project folder for this deck runs colocated jj over git. The parallel agents that built this deck worked in that way.
Part III — Make it work
--continuejj workspace add: one working copy per agent, so agents can edit the same line independently.jj/ sits next to .git/, so tools that expect a Git repo still find one · make changes with jjBoth sides replayed from real runs, git 2.54.0 and jj 0.46.0 · docs: conflicts · git command table · git compatibility
Part III — Make it work
One real PR, replayed from GitHub. The track and ledger follow the same events.
Source: the real PR, GitHub timeline, reviews and comments, July 26 to August 1, 2026. Names are generic. This PR merged without an owner seal.
Part III — Make it work
Fork mode is on by default: Claude can fork on its own · docs: subagents and forks · subagents and the cache
Part III — Make it work
LIVE · custom agent vs bare fetch, same question
One markdown file is the complete skill. The frontmatter declares the agent and the tools it may run without asking. Each gold !`…` runs a shell command before the skill reaches the model, and the command's output takes its place: docs · inject dynamic context.
Part III — Make it work
Every published row of CursorBench 4.0. The gold Pareto frontier marks the best score at each price.
Sources: cursor.com/cursorbench, CursorBench 4.0, fetched 2026-10-20 · cost per task applies each model's published token prices to the tokens it used · Jev: TypeSafe launch post, Sep 15, 2026
Compare: Slopalytics plots cost per task against an intelligence index, with a Pareto line. Data: Artificial Analysis.
Part III — Make it work
A /model switch mid-session busts the prompt cache. The next turn pays full price for the whole history.
A cache write costs 1.25x the base input price (5-minute cache) or 2x (1-hour). A hit costs 0.1x on most models, 0.05x on Opus 5.5 and Sonnet 5.5, and 0.025x on Fable 5.1. Sources: prompt caching, API · prompt caching, Claude Code
Part III — Make it work
Part III — Make it work
24 particle-physics questions, 10 runs each: 240 answers per model. A script checks every answer. No model grades another.
source: local benchmark dashboard, suite tier1-physics, run m1, 28 July 2026, run locally · method: the test plan · the dashboard shows /480 because its data lists every answer twice. The rates are the same.
Part III — Make it work
Examples since corrected: propellant 85% vs 92% · moonwalk photo called a splashdown party · “as transmitted” over [a] · planned 195 h 19 m vs 195:17.
Review decay, another review: R1 found faulty loop code. R2 added five fixes. R3 found no new defects.
Unpublished sources: Apollo council record, 29 July 2026, four specialists, three rounds. Ten of the eleven are fixed. The coast label now says 1.8 rev. The council found about 1.73. Review decay: a review of an earlier draft of this talk, 28 July 2026. Make each reviewer pay for a wrong accusation.
Part III — Make it work
One pinned commit, one primary review, a panel whose members cannot see each other, and a reconciler that checks every verdict against the source.
Schematic. Reviewer outcomes are illustrative. No report is linked. The report format is the OASIS SARIF 2.1.0 standard, read 21 Oct 2026.
Part III — Make it work
Part III — Make it work
“our code leaves the machine”
Code can reach the model provider. The allowlist limits destinations. Listed destinations receive the data the agent sends.
“AI code
is slop”
Read the diff. Verify it with trusted tests. Apply the same CI checks to every change.
“it deskills
engineers”
You remain accountable. Write tests and probes that could prove the model wrong.
“it's hype”
The early demos combine known work. The CursorBench chart compares scores with average cost per task.
The linked deck sections supply the evidence for each answer.
Part III — Make it work
Agents in contained sessions.
Public reference · anthropics/claude-code dev container
A tiny tip-split utility has a rounding bug.
Make the per-person charges sum to the bill.
Add a check.
Other harnesses can run in the same container.
The firewall does not change.
Reference shape, not a recording. Sources, read 21 Oct 2026: the reference dev container with its egress firewall · bubblewrap in the Claude Code sandbox on Linux · the bubblewrap README.
Part III — Make it work
Keys stay out of the cage.
| Who holds what | The cage | The broker |
|---|---|---|
| GitHub token | No GitHub token | The broker keeps it here |
| Scoped key | The session holds this key | The key allows only the reads the policy lists |
| Write policy | The scoped key cannot change it | A write needs human approval |
Pattern, not a recording. The table shows who holds which credential.
Part III — Make it work
Test each wall alone. A check you did not run is not evidence.
Write these checks for your own cage. Each one must fail when its wall is removed. Sources, read 21 Oct 2026: the non-root user, the managed settings file and the firewall in the dev container docs · the bubblewrap README.
Part III — Make it work
Choose a layer. Keep its check.
| Layer | What to add | Done when |
|---|---|---|
| SettingsNo container | deny rules and a sandbox allowlist in settings.json |
The .env read is denied.The off-list curl is blocked. |
| HooksEvery call, every commit | dcg as a PreToolUse hookgitleaks in prek |
rm -rf is blocked before the shell.A planted fake key fails the commit. |
| The cageDev container | the reference dev container with its egress firewall | From inside, an off-list host fails and a listed host answers. |
| The brokerOutside the cage | tokens live in a broker outside the container | env inside shows no code-host token.A write waits for a human. |
Install: a real terminal, and Docker for the cage.
Broker: you bring your own tokens.
Sources: Claude Code docs, settings and dev containers · dcg · gitleaks
Part III — Make it work
You saw the loop: the one-screen agent, the invented citations, the denied reads, the reviewed diff. That loop is the complete method. Use it on your next PR.
Part III — Make it work
Each step links to the slide that shows it.
Part III — Make it work
Benchmark numbers quoted from CursorBench 4.0, fetched 2026-10-20. All materials and prompts: this repo.
Part III — Make it work
The words the day leaned on, in the words the slides used.
The full glossary, every term with the slides that use it: glossary.html, generated from the deck's own ontology, talk.ttl. Click a term to open its entry. Compare the terms with the AI Coding Dictionary. Some definitions may differ. Terms that rune also defines link to the rune ontology.
❯ Hey, Fable, find mistakes in my PhD thesis