<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy" -->

---
title: Your Agent Didn&#x27;t Fail. Your Harness Did. — Vinoth...
description: A conference talk by an OpenAI engineer arguing that most AI agent production failures are harness failures, not model failures. Using OpenClaw as a public...
canonical: https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Your Agent Didn&#x27;t Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI | daily.dev
og:description: A conference talk by an OpenAI engineer arguing that most AI agent production failures are harness failures, not model failures. Using OpenClaw as a public...
og:url: https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy
og:image: https://api.daily.dev/og/posts/lGyZNkWUY.png
og:image:alt: Your Agent Didn&#x27;t Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Your Agent Didn't Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI

**[AI Engineer](https://daily.dev/sources/aidotengineer)** · 18 min read · 1 upvotes · 0 comments

## Summary

A conference talk by an OpenAI engineer arguing that most AI agent production failures are harness failures, not model failures. Using OpenClaw as a public case study, the speaker identifies five failure shapes: state holes (delivery succeeds but durable record is missing), overlapping writers (race conditions on shared mutable state), dangling tool calls (runs waiting for events that never arrive), approval drift (expired or misscoped authority), and missing edge proof (internal success without user-visible confirmation). The core framework is a three-part contract: own the state, order the mutation, and prove the action. A five-question audit is proposed for any production agent path: what triggered it, what state did it inherit, what authority did it use, what executed, and what evidence survived. The talk emphasizes that a better model cannot fix harness-level failures around state ownership, lifecycle management, authority scoping, and receipt generation.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=BInpv7lGp1o>

## Questions this post answers

### Why does an AI agent say it completed an action but the change never actually persists?

This happens when the harness surrounding the model fails to durably record state, not because the model itself failed. A reply can be delivered successfully to the user while the underlying system of record never gets updated, creating a silent state hole. The model then answers fluently on subsequent turns using an incomplete history, because it only ever sees what the harness supplies as context.

_Developers debugging stateful agent pipelines can find deeper harness design breakdowns on daily.dev._

### What causes two agent operations that are each individually correct to still produce a wrong result?

A load-modify-save race between two writers causes this: both callers load the same old state, each modifies a different record, and the second save silently overwrites the first, even though neither operation was malformed on its own. The fix is not eliminating concurrency but enforcing one ordered commit path per mutable state boundary, using a queue, mutex, or transaction scoped to that boundary rather than the whole system.

_Teams designing concurrent agent or service state need this kind of ordering discipline, a topic daily.dev readers track closely._

### What fields should an approval or permission object for an AI agent tool call include to avoid stale authorization being reused?

A useful approval object should record who approved the action, in which session and run, for which tool and arguments, for how long it remains valid, and what outcome resulted, with a pointer back to the receipt. Without an expiration that terminates rather than loops, an expired approval can be mistakenly treated as still retryable, letting a stale authorization block or replay later work.

_Anyone building tool-calling agents can weigh approval and authority patterns like this via daily.dev._

## Similar posts on daily.dev

- [Your agent loop is not a production system](https://daily.dev/posts/your-agent-loop-is-not-a-production-system-s0faarjcu) · LeadDev · 0 upvotes · 0 comments
- [Production AI Fails Outside the Model: How to Engineer Fallbacks, Observability, and Ownership](https://daily.dev/posts/production-ai-fails-outside-the-model-how-to-engineer-fallbacks-observability-and-ownership-iigfnpt7w) · SD Times · 0 upvotes · 0 comments
- [The State Of AI Harness Engineering 2026](https://daily.dev/posts/the-state-of-ai-harness-engineering-2026-z2cv9sfcz) · marmelab · 11 upvotes · 0 comments

---

Tags: [#career](https://daily.dev/tags/career), [#ai-agents](https://daily.dev/tags/ai-agents), [#openai](https://daily.dev/tags/openai), [#distributed-systems](https://daily.dev/tags/distributed-systems)

[View this post on daily.dev](https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Your Agent Didn't Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI","url":"https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy"},"datePublished":"2026-07-29T16:21:39.779Z","dateModified":"2026-09-14T08:34:14.463Z","description":"A conference talk by an OpenAI engineer arguing that most AI agent production failures are harness failures, not model failures. Using OpenClaw as a public...","image":"https://i.ytimg.com/vi/BInpv7lGp1o/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/BInpv7lGp1o/sddefault.jpg","isAccessibleForFree":true,"articleSection":"AI Engineer","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"AI Engineer","logo":"https://media.daily.dev/image/upload/s--u5PucxNT--/f_auto/v1724338940/logos/aidotengineer","url":"https://daily.dev/sources/aidotengineer"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"career,ai-agents,openai,distributed-systems","timeRequired":"PT18M","video":{"@type":"VideoObject","name":"Your Agent Didn't Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI","description":"A conference talk by an OpenAI engineer arguing that most AI agent production failures are harness failures, not model failures. Using OpenClaw as a public...","thumbnailUrl":"https://i.ytimg.com/vi/BInpv7lGp1o/sddefault.jpg","uploadDate":"2026-07-29T16:21:39.779Z","duration":"PT18M","url":"https://api.daily.dev/r/lGyZNkWUY","embedUrl":"https://www.youtube.com/embed/BInpv7lGp1o"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"AI Engineer","item":"https://daily.dev/sources/aidotengineer"},{"@type":"ListItem","position":3,"name":"Your Agent Didn't Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/your-agent-didn-t-fail-your-harness-did-vinoth-govindarajan-openai-lgyznkwuy#faq","mainEntity":[{"@type":"Question","name":"Why does an AI agent say it completed an action but the change never actually persists?","acceptedAnswer":{"@type":"Answer","text":"This happens when the harness surrounding the model fails to durably record state, not because the model itself failed. A reply can be delivered successfully to the user while the underlying system of record never gets updated, creating a silent state hole. The model then answers fluently on subsequent turns using an incomplete history, because it only ever sees what the harness supplies as context. Developers debugging stateful agent pipelines can find deeper harness design breakdowns on daily.dev."}},{"@type":"Question","name":"What causes two agent operations that are each individually correct to still produce a wrong result?","acceptedAnswer":{"@type":"Answer","text":"A load-modify-save race between two writers causes this: both callers load the same old state, each modifies a different record, and the second save silently overwrites the first, even though neither operation was malformed on its own. The fix is not eliminating concurrency but enforcing one ordered commit path per mutable state boundary, using a queue, mutex, or transaction scoped to that boundary rather than the whole system. Teams designing concurrent agent or service state need this kind of ordering discipline, a topic daily.dev readers track closely."}},{"@type":"Question","name":"What fields should an approval or permission object for an AI agent tool call include to avoid stale authorization being reused?","acceptedAnswer":{"@type":"Answer","text":"A useful approval object should record who approved the action, in which session and run, for which tool and arguments, for how long it remains valid, and what outcome resulted, with a pointer back to the receipt. Without an expiration that terminates rather than loops, an expired approval can be mistakenly treated as still retryable, letting a stale authorization block or replay later work. Anyone building tool-calling agents can weigh approval and authority patterns like this via daily.dev."}}]}
```

