diff --git a/README.md b/README.md index 76d51ff..c1aa1c0 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,18 @@ First-person voice, short blog, playbook, patterns, and honest measurement — personal brand, not a company brochure. +Here, the **working relationship** is the human experience and the **durable +agent harness** is the versioned, tested mechanism that makes it repeatable. +Portable skills are its core; product-specific guidance and controls are host +adapters; Codex and Cursor are the cockpits in which it runs. + +| Layer | Meaning in this notebook | +|---|---| +| Working relationship | The human experience: purpose, judgement, collaboration and learning | +| Durable harness | Skills, policy, memory, tools, gates, tests and feedback that should survive a host change | +| Host adapter | Codex- or Cursor-specific guidance, hooks, permissions and task integration | +| Cockpit / host | Codex or Cursor: the agent runtime and interface supplying native controls | + **Topics:** `ai` · `agents` · `cursor` · `developer-tools` · `llm` · `engineering` · `documentation` · `productivity` Site SEO includes canonical URLs, per-insight Open Graph / Twitter cards, diff --git a/content/blog.json b/content/blog.json index 1bec6aa..3f2c931 100644 --- a/content/blog.json +++ b/content/blog.json @@ -2,6 +2,52 @@ "schema": "durable-agent-harness/blog/v1", "intro": "What broke, what we locked, and what earned a place on disk \u2014 filed when the week earns it.", "posts": [ + { + "id": "what-i-mean-by-an-agent-harness", + "date": "2026-09-20", + "title": "What I mean by an agent harness", + "seoTitle": "What I mean by an agent harness", + "summary": "Cursor and Codex are the cockpits. The durable harness is the portable, tested system of skills, policy, memory, gates and feedback that survives between them.", + "section": "Working relationship", + "tags": [ + "agent harness", + "Codex", + "Cursor", + "Agent Skills", + "working relationship", + "agent engineering" + ], + "cardSeed": 14, + "customCard": true, + "imageAlt": "An engineer moves a compact tool roll between two laptop workstations in a real electronics lab.", + "imageDisclosure": "The documentary-style lab image was generated with OpenAI under Alex Lennon's direction, then cropped and typeset as a CWCW social card.", + "body": [ + "I have been using the word harness for the system we are building around coding agents. That sounds clear to me because I can see the pieces: skills, rules, tools, memory, human gates, tests and a feedback loop. It is less clear to somebody who hears ‘harness’ and points at Cursor or Codex. They may call the product itself the harness.", + "They are not being careless. The term is genuinely overloaded. Anthropic describes the Claude Agent SDK as a general-purpose agent harness, including its tool use and context management. OpenAI uses harness engineering for the wider environment around Codex: repository structure, legible knowledge, tools, tests and mechanically enforced boundaries. One meaning starts with the runtime. The other starts with the system that enables useful work.", + "When I say my harness, I mean the second thing. It is the versioned and tested layer that makes my way of working with an agent repeatable across changing hosts. The working relationship is the human experience. The harness is the engineered mechanism that supports it. Cursor or Codex is the cockpit in which it runs.", + "Moving from Cursor to Codex made that boundary visible. I wrote about the migration separately because it was useful in its own right. Here, the important point is narrower: the procedures travelled, while the policy plumbing had to be translated. Our Agent Skills could share one reviewed source of truth. Cursor rules did not become Codex policy by changing a file extension; Codex had its own guidance, sandbox, permissions, task model and worktrees. Human judgement remained at the consequential edge.", + "That also showed why the skills base is not the whole harness. Skills are its portable core: named procedures, supporting scripts and references that teach an agent how to do recurring work. Around them sit project guidance, memory practices, tool connections, approval boundaries, regression cases and proof of done. A directory full of SKILL.md files is a useful library. It becomes part of a harness when the surrounding system can select, constrain, exercise and improve it.", + "Nor do I own every layer. Cursor and Codex provide the agent loop, user interface, context handling and native controls. Models provide capabilities and limitations that change underneath us. Git, CI, external services and physical lab equipment provide the environment in which claims are tested. My harness is therefore not a replacement runtime. It is a portable overlay with host-specific adapters, built on capabilities supplied by each cockpit.", + "The vocabulary I now find useful is simple. The working relationship is what it feels like to work together. The harness is the durable mechanism. Skills are its portable core. Rules, hooks and guidance that depend on one product are host adapters. Cursor and Codex are agent hosts or cockpits. The model is not the harness, and neither is the chat window.", + "This distinction is practical, not taxonomic. If changing from Cursor to Codex means starting again, I did not own a harness; I had configured a product. If a safety rule exists only as something I remember to say, it is not a reliable boundary. If a procedure cannot be tested or retired when models improve, it will become permanent scaffolding. Portability, verification and the ability to remove obsolete parts are what make the layer durable.", + "The word will remain overloaded, so I do not think the answer is to declare everybody else wrong. The answer is to state the boundary. I am building a durable working relationship with agents. The harness is the versioned machinery that lets that relationship survive a new model, a new cockpit and a fresh Monday morning.", + "(Codex helped draft this)" + ], + "sources": [ + { + "label": "Anthropic: Effective harnesses for long-running agents", + "url": "https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents" + }, + { + "label": "OpenAI: Harness engineering", + "url": "https://openai.com/index/harness-engineering/" + }, + { + "label": "Cursor: Agent Skills", + "url": "https://cursor.com/docs/skills" + } + ] + }, { "id": "when-answers-are-cheap-judgement-matters-more", "date": "2026-09-15", diff --git a/content/glossary.json b/content/glossary.json index 88ed5d8..b4e39c8 100644 --- a/content/glossary.json +++ b/content/glossary.json @@ -4,11 +4,23 @@ "terms": [ { "term": "Harness", - "def": "The durable layer around a model and cockpit: skills, project guidance, memory, signed patterns, sensors, proof classes, host controls, and human gates that make agent work reliable and repeatable. In human-facing prose, I usually call this the working relationship." + "def": "The versioned and tested mechanism that makes a working relationship with agents repeatable across changing hosts: portable skills, explicit policy, memory practices, tools, human gates, sensors, proof classes and feedback. Product-specific guidance and controls are host adapters rather than the portable core. This is the notebook’s working definition, not a claim that the industry uses the word at one fixed boundary." + }, + { + "term": "Working relationship", + "def": "The human experience of working with agents: purpose, judgement, collaboration, trust and learning. The harness is the engineered mechanism that supports this relationship; the two terms are related but not interchangeable." + }, + { + "term": "Host adapter", + "def": "The product-specific mapping between the portable harness and an agent host: for example Codex AGENTS.md, sandbox and task conventions, or Cursor rules, hooks and permissions. An adapter should preserve intent without pretending unlike host mechanisms are the same." + }, + { + "term": "Cockpit / agent host", + "def": "The product and runtime in which the work runs. Codex and Cursor supply the agent loop, interface, context handling, native tools and controls. They can themselves be called harnesses in broader industry usage; this notebook calls them hosts when distinguishing them from Alex’s portable layer." }, { "term": "Codex", - "def": "The primary cockpit in this notebook since 2026-08-30: tasks, managed worktrees, files, terminals, reviews and app tools around the code. It hosts the working relationship; it is not the whole working relationship." + "def": "The primary cockpit in this notebook since 2026-08-30: tasks, managed worktrees, files, terminals, reviews and app tools around the code. It hosts the durable harness and working relationship; it is not identical to either." }, { "term": "Agent Skill", diff --git a/content/runtime.json b/content/runtime.json index c6616d8..8096cd5 100644 --- a/content/runtime.json +++ b/content/runtime.json @@ -70,5 +70,5 @@ "Not the same thing as Preloop’s desktop MCP approvals in Cursor." ] }, - "together": "The durable working relationship — skills, guidance, memory, signed patterns and proof — steers behaviour. Codex owns its model path, sandbox and permissions. Preloop can audit selected tool flows and review PR commits; OpenRouter routes external model capacity for those workflows. CI may wait on the review signal. Humans still own consequential actions and merges." + "together": "The durable harness — portable skills, explicit policy, memory, signed patterns, gates and proof — supports the working relationship. Codex owns its model path, sandbox and permissions; those host-native mechanisms are dependencies and adapters, not portable assets. Preloop can audit selected tool flows and review PR commits; OpenRouter routes external model capacity for those workflows. CI may wait on the review signal. Humans still own consequential actions and merges." } diff --git a/content/stack.json b/content/stack.json index 927f167..a10aa4c 100644 --- a/content/stack.json +++ b/content/stack.json @@ -1,12 +1,12 @@ { "schema": "durable-agent-harness/stack/v1", - "intro": "A harness is the durable layer around a model: procedures, constraints, memory, patterns, and human gates. The model is powerful; the harness is what makes Monday morning repeatable.", + "intro": "The working relationship is the human experience. The harness is the versioned and tested mechanism that makes it repeatable: portable procedures, explicit policy, memory, tools, human gates and feedback. Codex and Cursor are cockpits; product-specific mechanisms are host adapters.", "layers": [ { "id": "cockpit", "title": "Cockpit", "subtitle": "Codex primary · Cursor compatible", - "body": "Codex is now the daily task, worktree and review surface. Cursor remains supported. Neither owns the working relationship: portable skills and proof classes outlive the host; guidance and permissions stay native to it.", + "body": "Codex is now the daily task, worktree and review surface. Cursor remains supported. Neither owns the durable harness or the working relationship: portable skills and proof classes outlive the host; guidance, permissions and task mechanisms stay native to it as adapters.", "tips": [ "Codex project guidance in AGENTS.md", "Portable procedures in Agent Skills", @@ -17,7 +17,7 @@ "id": "skills", "title": "Skills", "subtitle": "How to do a job", - "body": "Thin, named procedures the agent loads when a task matches. Detail lives on demand so every turn stays cheap. A skill earns its place by preventing a repeated failure.", + "body": "The portable core of the harness: thin, named procedures the agent loads when a task matches. Detail lives on demand so every turn stays cheap. A skill earns its place by preventing a repeated failure, but the skills library is not the whole harness.", "tips": [ "Trigger nouns in the description so the host can select it", "Separate SKILL.md (short) from reference.md (deep)", diff --git a/docs/assets/notes/what-i-mean-by-an-agent-harness-og.png b/docs/assets/notes/what-i-mean-by-an-agent-harness-og.png new file mode 100644 index 0000000..355de49 Binary files /dev/null and b/docs/assets/notes/what-i-mean-by-an-agent-harness-og.png differ diff --git a/docs/content/blog.json b/docs/content/blog.json index 1bec6aa..3f2c931 100644 --- a/docs/content/blog.json +++ b/docs/content/blog.json @@ -2,6 +2,52 @@ "schema": "durable-agent-harness/blog/v1", "intro": "What broke, what we locked, and what earned a place on disk \u2014 filed when the week earns it.", "posts": [ + { + "id": "what-i-mean-by-an-agent-harness", + "date": "2026-09-20", + "title": "What I mean by an agent harness", + "seoTitle": "What I mean by an agent harness", + "summary": "Cursor and Codex are the cockpits. The durable harness is the portable, tested system of skills, policy, memory, gates and feedback that survives between them.", + "section": "Working relationship", + "tags": [ + "agent harness", + "Codex", + "Cursor", + "Agent Skills", + "working relationship", + "agent engineering" + ], + "cardSeed": 14, + "customCard": true, + "imageAlt": "An engineer moves a compact tool roll between two laptop workstations in a real electronics lab.", + "imageDisclosure": "The documentary-style lab image was generated with OpenAI under Alex Lennon's direction, then cropped and typeset as a CWCW social card.", + "body": [ + "I have been using the word harness for the system we are building around coding agents. That sounds clear to me because I can see the pieces: skills, rules, tools, memory, human gates, tests and a feedback loop. It is less clear to somebody who hears ‘harness’ and points at Cursor or Codex. They may call the product itself the harness.", + "They are not being careless. The term is genuinely overloaded. Anthropic describes the Claude Agent SDK as a general-purpose agent harness, including its tool use and context management. OpenAI uses harness engineering for the wider environment around Codex: repository structure, legible knowledge, tools, tests and mechanically enforced boundaries. One meaning starts with the runtime. The other starts with the system that enables useful work.", + "When I say my harness, I mean the second thing. It is the versioned and tested layer that makes my way of working with an agent repeatable across changing hosts. The working relationship is the human experience. The harness is the engineered mechanism that supports it. Cursor or Codex is the cockpit in which it runs.", + "Moving from Cursor to Codex made that boundary visible. I wrote about the migration separately because it was useful in its own right. Here, the important point is narrower: the procedures travelled, while the policy plumbing had to be translated. Our Agent Skills could share one reviewed source of truth. Cursor rules did not become Codex policy by changing a file extension; Codex had its own guidance, sandbox, permissions, task model and worktrees. Human judgement remained at the consequential edge.", + "That also showed why the skills base is not the whole harness. Skills are its portable core: named procedures, supporting scripts and references that teach an agent how to do recurring work. Around them sit project guidance, memory practices, tool connections, approval boundaries, regression cases and proof of done. A directory full of SKILL.md files is a useful library. It becomes part of a harness when the surrounding system can select, constrain, exercise and improve it.", + "Nor do I own every layer. Cursor and Codex provide the agent loop, user interface, context handling and native controls. Models provide capabilities and limitations that change underneath us. Git, CI, external services and physical lab equipment provide the environment in which claims are tested. My harness is therefore not a replacement runtime. It is a portable overlay with host-specific adapters, built on capabilities supplied by each cockpit.", + "The vocabulary I now find useful is simple. The working relationship is what it feels like to work together. The harness is the durable mechanism. Skills are its portable core. Rules, hooks and guidance that depend on one product are host adapters. Cursor and Codex are agent hosts or cockpits. The model is not the harness, and neither is the chat window.", + "This distinction is practical, not taxonomic. If changing from Cursor to Codex means starting again, I did not own a harness; I had configured a product. If a safety rule exists only as something I remember to say, it is not a reliable boundary. If a procedure cannot be tested or retired when models improve, it will become permanent scaffolding. Portability, verification and the ability to remove obsolete parts are what make the layer durable.", + "The word will remain overloaded, so I do not think the answer is to declare everybody else wrong. The answer is to state the boundary. I am building a durable working relationship with agents. The harness is the versioned machinery that lets that relationship survive a new model, a new cockpit and a fresh Monday morning.", + "(Codex helped draft this)" + ], + "sources": [ + { + "label": "Anthropic: Effective harnesses for long-running agents", + "url": "https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents" + }, + { + "label": "OpenAI: Harness engineering", + "url": "https://openai.com/index/harness-engineering/" + }, + { + "label": "Cursor: Agent Skills", + "url": "https://cursor.com/docs/skills" + } + ] + }, { "id": "when-answers-are-cheap-judgement-matters-more", "date": "2026-09-15", diff --git a/docs/content/glossary.json b/docs/content/glossary.json index 88ed5d8..b4e39c8 100644 --- a/docs/content/glossary.json +++ b/docs/content/glossary.json @@ -4,11 +4,23 @@ "terms": [ { "term": "Harness", - "def": "The durable layer around a model and cockpit: skills, project guidance, memory, signed patterns, sensors, proof classes, host controls, and human gates that make agent work reliable and repeatable. In human-facing prose, I usually call this the working relationship." + "def": "The versioned and tested mechanism that makes a working relationship with agents repeatable across changing hosts: portable skills, explicit policy, memory practices, tools, human gates, sensors, proof classes and feedback. Product-specific guidance and controls are host adapters rather than the portable core. This is the notebook’s working definition, not a claim that the industry uses the word at one fixed boundary." + }, + { + "term": "Working relationship", + "def": "The human experience of working with agents: purpose, judgement, collaboration, trust and learning. The harness is the engineered mechanism that supports this relationship; the two terms are related but not interchangeable." + }, + { + "term": "Host adapter", + "def": "The product-specific mapping between the portable harness and an agent host: for example Codex AGENTS.md, sandbox and task conventions, or Cursor rules, hooks and permissions. An adapter should preserve intent without pretending unlike host mechanisms are the same." + }, + { + "term": "Cockpit / agent host", + "def": "The product and runtime in which the work runs. Codex and Cursor supply the agent loop, interface, context handling, native tools and controls. They can themselves be called harnesses in broader industry usage; this notebook calls them hosts when distinguishing them from Alex’s portable layer." }, { "term": "Codex", - "def": "The primary cockpit in this notebook since 2026-08-30: tasks, managed worktrees, files, terminals, reviews and app tools around the code. It hosts the working relationship; it is not the whole working relationship." + "def": "The primary cockpit in this notebook since 2026-08-30: tasks, managed worktrees, files, terminals, reviews and app tools around the code. It hosts the durable harness and working relationship; it is not identical to either." }, { "term": "Agent Skill", diff --git a/docs/content/runtime.json b/docs/content/runtime.json index c6616d8..8096cd5 100644 --- a/docs/content/runtime.json +++ b/docs/content/runtime.json @@ -70,5 +70,5 @@ "Not the same thing as Preloop’s desktop MCP approvals in Cursor." ] }, - "together": "The durable working relationship — skills, guidance, memory, signed patterns and proof — steers behaviour. Codex owns its model path, sandbox and permissions. Preloop can audit selected tool flows and review PR commits; OpenRouter routes external model capacity for those workflows. CI may wait on the review signal. Humans still own consequential actions and merges." + "together": "The durable harness — portable skills, explicit policy, memory, signed patterns, gates and proof — supports the working relationship. Codex owns its model path, sandbox and permissions; those host-native mechanisms are dependencies and adapters, not portable assets. Preloop can audit selected tool flows and review PR commits; OpenRouter routes external model capacity for those workflows. CI may wait on the review signal. Humans still own consequential actions and merges." } diff --git a/docs/content/stack.json b/docs/content/stack.json index 927f167..a10aa4c 100644 --- a/docs/content/stack.json +++ b/docs/content/stack.json @@ -1,12 +1,12 @@ { "schema": "durable-agent-harness/stack/v1", - "intro": "A harness is the durable layer around a model: procedures, constraints, memory, patterns, and human gates. The model is powerful; the harness is what makes Monday morning repeatable.", + "intro": "The working relationship is the human experience. The harness is the versioned and tested mechanism that makes it repeatable: portable procedures, explicit policy, memory, tools, human gates and feedback. Codex and Cursor are cockpits; product-specific mechanisms are host adapters.", "layers": [ { "id": "cockpit", "title": "Cockpit", "subtitle": "Codex primary · Cursor compatible", - "body": "Codex is now the daily task, worktree and review surface. Cursor remains supported. Neither owns the working relationship: portable skills and proof classes outlive the host; guidance and permissions stay native to it.", + "body": "Codex is now the daily task, worktree and review surface. Cursor remains supported. Neither owns the durable harness or the working relationship: portable skills and proof classes outlive the host; guidance, permissions and task mechanisms stay native to it as adapters.", "tips": [ "Codex project guidance in AGENTS.md", "Portable procedures in Agent Skills", @@ -17,7 +17,7 @@ "id": "skills", "title": "Skills", "subtitle": "How to do a job", - "body": "Thin, named procedures the agent loads when a task matches. Detail lives on demand so every turn stays cheap. A skill earns its place by preventing a repeated failure.", + "body": "The portable core of the harness: thin, named procedures the agent loads when a task matches. Detail lives on demand so every turn stays cheap. A skill earns its place by preventing a repeated failure, but the skills library is not the whole harness.", "tips": [ "Trigger nouns in the description so the host can select it", "Separate SKILL.md (short) from reference.md (deep)", diff --git a/docs/feed.xml b/docs/feed.xml index 1214755..7696919 100644 --- a/docs/feed.xml +++ b/docs/feed.xml @@ -5,7 +5,15 @@ https://chopwoodcarrywater.uk/ Engineering insights on durable working relationships with AI coding agents. en-gb - Tue, 15 Sep 2026 00:00:00 +0000 + Sun, 20 Sep 2026 00:00:00 +0000 + + What I mean by an agent harness + https://chopwoodcarrywater.uk/notes/what-i-mean-by-an-agent-harness.html + https://chopwoodcarrywater.uk/notes/what-i-mean-by-an-agent-harness.html + Sun, 20 Sep 2026 00:00:00 +0000 + Cursor and Codex are the cockpits. The durable harness is the portable, tested system of skills, policy, memory, gates and feedback that survives between them. + I have been using the word harness for the system we are building around coding agents. That sounds clear to me because I can see the pieces: skills, rules, tools, memory, human gates, tests and a feedback loop. It is less clear to somebody who hears ‘harness’ and points at Cursor or Codex. They may call the product itself the harness.

They are not being careless. The term is genuinely overloaded. Anthropic describes the Claude Agent SDK as a general-purpose agent harness, including its tool use and context management. OpenAI uses harness engineering for the wider environment around Codex: repository structure, legible knowledge, tools, tests and mechanically enforced boundaries. One meaning starts with the runtime. The other starts with the system that enables useful work.

When I say my harness, I mean the second thing. It is the versioned and tested layer that makes my way of working with an agent repeatable across changing hosts. The working relationship is the human experience. The harness is the engineered mechanism that supports it. Cursor or Codex is the cockpit in which it runs.

Moving from Cursor to Codex made that boundary visible. I wrote about the migration separately because it was useful in its own right. Here, the important point is narrower: the procedures travelled, while the policy plumbing had to be translated. Our Agent Skills could share one reviewed source of truth. Cursor rules did not become Codex policy by changing a file extension; Codex had its own guidance, sandbox, permissions, task model and worktrees. Human judgement remained at the consequential edge.

That also showed why the skills base is not the whole harness. Skills are its portable core: named procedures, supporting scripts and references that teach an agent how to do recurring work. Around them sit project guidance, memory practices, tool connections, approval boundaries, regression cases and proof of done. A directory full of SKILL.md files is a useful library. It becomes part of a harness when the surrounding system can select, constrain, exercise and improve it.

Nor do I own every layer. Cursor and Codex provide the agent loop, user interface, context handling and native controls. Models provide capabilities and limitations that change underneath us. Git, CI, external services and physical lab equipment provide the environment in which claims are tested. My harness is therefore not a replacement runtime. It is a portable overlay with host-specific adapters, built on capabilities supplied by each cockpit.

The vocabulary I now find useful is simple. The working relationship is what it feels like to work together. The harness is the durable mechanism. Skills are its portable core. Rules, hooks and guidance that depend on one product are host adapters. Cursor and Codex are agent hosts or cockpits. The model is not the harness, and neither is the chat window.

This distinction is practical, not taxonomic. If changing from Cursor to Codex means starting again, I did not own a harness; I had configured a product. If a safety rule exists only as something I remember to say, it is not a reliable boundary. If a procedure cannot be tested or retired when models improve, it will become permanent scaffolding. Portability, verification and the ability to remove obsolete parts are what make the layer durable.

The word will remain overloaded, so I do not think the answer is to declare everybody else wrong. The answer is to state the boundary. I am building a durable working relationship with agents. The harness is the versioned machinery that lets that relationship survive a new model, a new cockpit and a fresh Monday morning.

(Codex helped draft this)

]]>
+
When answers are cheap, judgement matters more https://chopwoodcarrywater.uk/notes/when-answers-are-cheap-judgement-matters-more.html diff --git a/docs/index.html b/docs/index.html index 4b924ae..1ae68bd 100644 --- a/docs/index.html +++ b/docs/index.html @@ -520,6 +520,12 @@

Insights

+
+ +

What I mean by an agent harness

+

Cursor and Codex are the cockpits. The durable harness is the portable, tested system of skills, policy, memory, gates and feedback that survives between them.

+ Read and share +
-
diff --git a/docs/llms.txt b/docs/llms.txt index 944513b..8b34ae0 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -8,6 +8,7 @@ - [RSS feed](https://chopwoodcarrywater.uk/feed.xml) ## Insights +- [What I mean by an agent harness](https://chopwoodcarrywater.uk/notes/what-i-mean-by-an-agent-harness.html) - [When answers are cheap, judgement matters more](https://chopwoodcarrywater.uk/notes/when-answers-are-cheap-judgement-matters-more.html) - [A quick check is still a model turn](https://chopwoodcarrywater.uk/notes/quick-check-is-still-a-model-turn.html) - [The cockpit changed. The work did not.](https://chopwoodcarrywater.uk/notes/the-cockpit-changed-the-work-did-not.html) diff --git a/docs/notes/what-i-mean-by-an-agent-harness.html b/docs/notes/what-i-mean-by-an-agent-harness.html new file mode 100644 index 0000000..b745d5b --- /dev/null +++ b/docs/notes/what-i-mean-by-an-agent-harness.html @@ -0,0 +1,175 @@ + + + + + + What I mean by an agent harness — Chop Wood Carry Water + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Chop Wood Carry WaterDurable Agent Harness + + +
+
+
+
+ +

Working relationship · 20th September 2026

+

What I mean by an agent harness

+ +

Cursor and Codex are the cockpits. The durable harness is the portable, tested system of skills, policy, memory, gates and feedback that survives between them.

+ +
+
+ An engineer moves a compact tool roll between two laptop workstations in a real electronics lab. +
The documentary-style lab image was generated with OpenAI under Alex Lennon's direction, then cropped and typeset as a CWCW social card.
+
+
+

I have been using the word harness for the system we are building around coding agents. That sounds clear to me because I can see the pieces: skills, rules, tools, memory, human gates, tests and a feedback loop. It is less clear to somebody who hears ‘harness’ and points at Cursor or Codex. They may call the product itself the harness.

+

They are not being careless. The term is genuinely overloaded. Anthropic describes the Claude Agent SDK as a general-purpose agent harness, including its tool use and context management. OpenAI uses harness engineering for the wider environment around Codex: repository structure, legible knowledge, tools, tests and mechanically enforced boundaries. One meaning starts with the runtime. The other starts with the system that enables useful work.

+

When I say my harness, I mean the second thing. It is the versioned and tested layer that makes my way of working with an agent repeatable across changing hosts. The working relationship is the human experience. The harness is the engineered mechanism that supports it. Cursor or Codex is the cockpit in which it runs.

+

Moving from Cursor to Codex made that boundary visible. I wrote about the migration separately because it was useful in its own right. Here, the important point is narrower: the procedures travelled, while the policy plumbing had to be translated. Our Agent Skills could share one reviewed source of truth. Cursor rules did not become Codex policy by changing a file extension; Codex had its own guidance, sandbox, permissions, task model and worktrees. Human judgement remained at the consequential edge.

+

That also showed why the skills base is not the whole harness. Skills are its portable core: named procedures, supporting scripts and references that teach an agent how to do recurring work. Around them sit project guidance, memory practices, tool connections, approval boundaries, regression cases and proof of done. A directory full of SKILL.md files is a useful library. It becomes part of a harness when the surrounding system can select, constrain, exercise and improve it.

+

Nor do I own every layer. Cursor and Codex provide the agent loop, user interface, context handling and native controls. Models provide capabilities and limitations that change underneath us. Git, CI, external services and physical lab equipment provide the environment in which claims are tested. My harness is therefore not a replacement runtime. It is a portable overlay with host-specific adapters, built on capabilities supplied by each cockpit.

+

The vocabulary I now find useful is simple. The working relationship is what it feels like to work together. The harness is the durable mechanism. Skills are its portable core. Rules, hooks and guidance that depend on one product are host adapters. Cursor and Codex are agent hosts or cockpits. The model is not the harness, and neither is the chat window.

+

This distinction is practical, not taxonomic. If changing from Cursor to Codex means starting again, I did not own a harness; I had configured a product. If a safety rule exists only as something I remember to say, it is not a reliable boundary. If a procedure cannot be tested or retired when models improve, it will become permanent scaffolding. Portability, verification and the ability to remove obsolete parts are what make the layer durable.

+

The word will remain overloaded, so I do not think the answer is to declare everybody else wrong. The answer is to state the boundary. I am building a durable working relationship with agents. The harness is the versioned machinery that lets that relationship survive a new model, a new cockpit and a fresh Monday morning.

+

(Codex helped draft this)

+
+ +
+
+

Share this insight

+

Share the canonical article link with its Chop Wood Carry Water preview card.

+
+ Share on LinkedIn + +
+ +
+

All insights

+
+
+
+ + + + diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 05dd4c3..cad42f8 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -2,7 +2,7 @@ https://chopwoodcarrywater.uk/ - 2026-09-15 + 2026-09-20 1.0 @@ -10,6 +10,11 @@ 2026-09-05 0.8 + + https://chopwoodcarrywater.uk/notes/what-i-mean-by-an-agent-harness.html + 2026-09-20 + 0.9 + https://chopwoodcarrywater.uk/notes/when-answers-are-cheap-judgement-matters-more.html 2026-09-15