2:I[2567,["8905","static/chunks/8905-f6f9469353911fb0.js","3143","static/chunks/3143-f3ed02939fea6e75.js","5766","static/chunks/5766-4fe247b65648a8a7.js","7648","static/chunks/7648-34771bb3fdb1b05c.js","5878","static/chunks/5878-a24e9e9351be5527.js","4873","static/chunks/4873-c3ddefc71fade8a6.js","2567","static/chunks/2567-e795bdb7aa0ec206.js","8252","static/chunks/app/(marketing)/guides/human-in-the-loop-ai-agents/page-565995d7aceca5ce.js"],"MarketingShell"]
3:I[7382,["8905","static/chunks/8905-f6f9469353911fb0.js","3143","static/chunks/3143-f3ed02939fea6e75.js","5766","static/chunks/5766-4fe247b65648a8a7.js","7648","static/chunks/7648-34771bb3fdb1b05c.js","5878","static/chunks/5878-a24e9e9351be5527.js","4873","static/chunks/4873-c3ddefc71fade8a6.js","2567","static/chunks/2567-e795bdb7aa0ec206.js","8252","static/chunks/app/(marketing)/guides/human-in-the-loop-ai-agents/page-565995d7aceca5ce.js"],"Section"]
4:I[7382,["8905","static/chunks/8905-f6f9469353911fb0.js","3143","static/chunks/3143-f3ed02939fea6e75.js","5766","static/chunks/5766-4fe247b65648a8a7.js","7648","static/chunks/7648-34771bb3fdb1b05c.js","5878","static/chunks/5878-a24e9e9351be5527.js","4873","static/chunks/4873-c3ddefc71fade8a6.js","2567","static/chunks/2567-e795bdb7aa0ec206.js","8252","static/chunks/app/(marketing)/guides/human-in-the-loop-ai-agents/page-565995d7aceca5ce.js"],"CodeBlock"]
5:I[7382,["8905","static/chunks/8905-f6f9469353911fb0.js","3143","static/chunks/3143-f3ed02939fea6e75.js","5766","static/chunks/5766-4fe247b65648a8a7.js","7648","static/chunks/7648-34771bb3fdb1b05c.js","5878","static/chunks/5878-a24e9e9351be5527.js","4873","static/chunks/4873-c3ddefc71fade8a6.js","2567","static/chunks/2567-e795bdb7aa0ec206.js","8252","static/chunks/app/(marketing)/guides/human-in-the-loop-ai-agents/page-565995d7aceca5ce.js"],"ButtonLink"]
6:I[4707,[],""]
7:I[6423,[],""]
8:I[4873,["8905","static/chunks/8905-f6f9469353911fb0.js","3143","static/chunks/3143-f3ed02939fea6e75.js","5766","static/chunks/5766-4fe247b65648a8a7.js","7648","static/chunks/7648-34771bb3fdb1b05c.js","1713","static/chunks/1713-838bb3f7c92f419b.js","5878","static/chunks/5878-a24e9e9351be5527.js","5896","static/chunks/5896-b2e5ead8abb9b59e.js","4873","static/chunks/4873-c3ddefc71fade8a6.js","3185","static/chunks/app/layout-4a2d8915965980a8.js"],"Providers"]
9:I[6151,["8905","static/chunks/8905-f6f9469353911fb0.js","3143","static/chunks/3143-f3ed02939fea6e75.js","5766","static/chunks/5766-4fe247b65648a8a7.js","7648","static/chunks/7648-34771bb3fdb1b05c.js","1713","static/chunks/1713-838bb3f7c92f419b.js","5878","static/chunks/5878-a24e9e9351be5527.js","5896","static/chunks/5896-b2e5ead8abb9b59e.js","4873","static/chunks/4873-c3ddefc71fade8a6.js","3185","static/chunks/app/layout-4a2d8915965980a8.js"],"Shell"]
a:{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"}
b:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
c:{"display":"inline-block"}
d:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
0:["LZJ6FA63ApqAwurXqGySJ",[[["",{"children":["(marketing)",{"children":["guides",{"children":["human-in-the-loop-ai-agents",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",{"children":["(marketing)",{"children":["guides",{"children":["human-in-the-loop-ai-agents",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"children":["$","$L3",null,{"className":"page-y","children":["$","article",null,{"className":"prose-omem max-w-3xl","children":[["$","div",null,{"className":"tech-label mb-3","children":"Guide"}],["$","h1",null,{"className":"display text-3xl","children":"Human-in-the-loop approvals for AI agents"}],["$","p",null,{"className":"lede","children":"“Can a human approve before the agent acts?” is the question that decides whether an agent is allowed into production with a client. This guide covers what a defensible approval gate actually requires, why a confirm dialog is not one, and a working pattern you can run locally."}],["$","h2",null,{"children":"What does a real approval gate need?"}],["$","p",null,{"children":"Four properties separate a gate a reviewer will accept from a speed bump:"}],["$","ul",null,{"children":[["$","li",null,{"children":[["$","strong",null,{"children":"A closed set of actions."}]," Only action types registered in code can execute at all. The model can propose anything; proposing a name does not bring an action into existence."]}],["$","li",null,{"children":[["$","strong",null,{"children":"Risk decided by the system, not the plan."}]," The risk class of an action comes from your registry, never from the model’s own description of what it wants to do."]}],["$","li",null,{"children":[["$","strong",null,{"children":"A named approver."}]," High-risk actions wait for a specific human, and the approval is recorded under that person’s name. “Someone clicked yes” is not accountability."]}],["$","li",null,{"children":[["$","strong",null,{"children":"Refusals on the record."}]," A denied action is written down with its reason. The refusal is evidence, and it is the half of the story most systems throw away."]}]]}],["$","h2",null,{"children":"Why is a confirm dialog not enough?"}],["$","p",null,{"children":["A yes/no prompt fails all four properties: it approves whatever string the model produced (open set), trusts the model’s framing of risk, records no approver identity, and leaves no trace when someone clicks no. It creates the ",["$","em",null,{"children":"feeling"}]," of control and none of the record. Under review, the difference is fatal."]}],["$","h2",null,{"children":"A working pattern: propose, decide, record"}],["$","$L4",null,{"label":"The model proposes; the system decides","single":"result = mem.healing.handle(\n    error={\"component\": \"billing-sync\", \"error_type\": \"AuthError\"},\n    plan={\"diagnosis\": \"credentials rotated upstream\",\n          \"actions\": [{\"type\": \"reload_config\"},\n                      {\"type\": \"exec_shell\"}]},\n)\n\nresult[\"status\"]\n# \"denied\"  - nothing executed\n\nresult[\"decisions\"]\n# reload_config  permitted      (low risk, registered)\n# exec_shell     unknown action type (not registered)\n#\n# the refusal is recorded with a reason for every action"}],["$","p",null,{"children":["The model proposed ",["$","span",null,{"className":"mono","children":"exec_shell"}],". It was not registered, so it could not run, whatever the plan claimed about it. The decision, including the refusal, is written to the record. That is the shape of a defensible gate: the authority lives in code you wrote, and every exercise of it leaves evidence."]}],["$","h2",null,{"children":"Where do the waiting questions go?"}],["$","p",null,{"children":"A gate produces questions a human has to answer: approve this high-risk repair, resolve this rule violation, decide whether two records are the same person. In OMEM those wait in a judgment queue; each decision is recorded under the decider’s name, and a dismissed question is never asked twice. The queue ships in the open-source dashboard."}],["$","h2",null,{"children":"How does this connect to the audit trail?"}],["$","p",null,{"children":["Approvals are one half of accountability; the other half is proving",["$","em",null,{"children":" why the agent believed what it believed"}]," when it acted. Together they answer the two questions every client review asks: who allowed it, and on what basis. The belief half has its own guide: ",["$","a",null,{"href":"/guides/ai-agent-audit-trail","children":"an audit trail for AI agents"}],"."]}],["$","div",null,{"className":"mt-10 flex flex-wrap gap-3","children":[["$","$L5",null,{"href":"/docs/quickstart","children":"Run it locally in a minute"}],["$","$L5",null,{"href":"/pilot","variant":"secondary","children":"Get it wired into your stack"}]]}]]}]}]}],null],null],null]},[null,["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","(marketing)","children","guides","children","human-in-the-loop-ai-agents","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","(marketing)","children","guides","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","(marketing)","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9f10caa481f214cd.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_8adcd2 __variable_46451f","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{\nvar s=localStorage.getItem(\"omem-theme\");\nvar d=s?s===\"dark\":window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\nif(d)document.documentElement.classList.add(\"dark\");\ndocument.documentElement.style.colorScheme=d?\"dark\":\"light\";\n}catch(e){}})();"}}],""]}],["$","body",null,{"children":[["$","a",null,{"href":"#main","className":"skip-link","children":"Skip to content"}],["$","$L8",null,{"children":["$","$L9",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$a","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$b","children":"404"}],["$","div",null,{"style":"$c","children":["$","h2",null,{"style":"$d","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]]}]]}]],null],null],["$Le",null]]]]
e:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover"}],["$","meta","1",{"name":"theme-color","media":"(prefers-color-scheme: light)","content":"#faf9f6"}],["$","meta","2",{"name":"theme-color","media":"(prefers-color-scheme: dark)","content":"#171614"}],["$","meta","3",{"charSet":"utf-8"}],["$","title","4",{"children":"Human-in-the-loop approvals for AI agents / OMEM"}],["$","meta","5",{"name":"description","content":"How to gate an AI agent's risky actions behind human approval: what a defensible approval gate needs, why a yes/no prompt is not enough, and a working self-hosted pattern where unregistered actions cannot execute."}],["$","meta","6",{"name":"application-name","content":"OMEM"}],["$","meta","7",{"name":"format-detection","content":"telephone=no"}],["$","meta","8",{"property":"og:title","content":"OMEM / accountability for the AI agents you ship"}],["$","meta","9",{"property":"og:description","content":"OMEM keeps AI agents answerable: an audit trail of what the agent believed and when, and a human approval gate before a risky action runs. Built on a belief-revision engine that keeps contradictions and proves provenance. Self-hosted, MIT, no dependencies."}],["$","meta","10",{"property":"og:url","content":"https://infrastructure.omem-cloud.com/"}],["$","meta","11",{"property":"og:site_name","content":"OMEM"}],["$","meta","12",{"property":"og:image","content":"https://infrastructure.omem-cloud.com/icon.png"}],["$","meta","13",{"property":"og:type","content":"website"}],["$","meta","14",{"name":"twitter:card","content":"summary"}],["$","meta","15",{"name":"twitter:title","content":"OMEM / accountability for the AI agents you ship"}],["$","meta","16",{"name":"twitter:description","content":"OMEM keeps AI agents answerable: an audit trail of what the agent believed and when, and a human approval gate before a risky action runs. Built on a belief-revision engine that keeps contradictions and proves provenance. Self-hosted, MIT, no dependencies."}],["$","meta","17",{"name":"twitter:image","content":"https://infrastructure.omem-cloud.com/icon.png"}],["$","link","18",{"rel":"icon","href":"/icon.png?2085097fd5dec5e8","type":"image/png","sizes":"512x512"}],["$","link","19",{"rel":"apple-touch-icon","href":"/apple-icon.png?75e7810ff587c16c","type":"image/png","sizes":"180x180"}],["$","meta","20",{"name":"next-size-adjust"}]]
1:null
