[{"data":1,"prerenderedAt":2728},["ShallowReactive",2],{"site-nav-content":3,"blog:/blog/what-is-loop-engineering":179,"blog-index-copy":1112,"blog:/blog/what-is-loop-engineering:surround":1133,"hiring-banner-content":2697,"site-cta-content":2709},{"header":4,"productNav":9,"nav":42,"footer":61,"askAI":132,"id":163,"title":164,"archived":165,"authors":166,"badge":166,"body":167,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":175,"relatedHeading":166,"seo":176,"series":166,"sitemap":165,"status":166,"stem":177,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":178},{"productLabel":5,"loginLabel":6,"contactLabel":7,"contactSalesLabel":8},"Product","Log in","Contact","Get started for free",[10,14,18,22,26,30,34,38],{"label":11,"to":12,"description":13},"Overview","/overview","Seven layers. One closed loop.",{"label":15,"to":16,"description":17},"Conflux","/product/conflux","Where your team, workstreams, and agents meet.",{"label":19,"to":20,"description":21},"Agent Teams","/product/agent-teams","Specialist teams - governed from day one.",{"label":23,"to":24,"description":25},"Lifecycle Graph","/product/lifecycle-graph","Intelligence that compounds across every interaction.",{"label":27,"to":28,"description":29},"Company Wiki","/product/wiki","Playbooks and policies where expertise stays.",{"label":31,"to":32,"description":33},"Workstreams","/product/workstreams","From brief to signed-off deliverable on one canvas.",{"label":35,"to":36,"description":37},"Perception Console","/product/perception","Ask your whole business in plain English.",{"label":39,"to":40,"description":41},"Governance","/product/governance","Frontier AI you can actually sign off on.",[43,46,49,52,55,58],{"label":44,"to":45},"Models","/models",{"label":47,"to":48},"Pricing","/pricing",{"label":50,"to":51},"Integrations","/integrations",{"label":53,"to":54},"Security","/security",{"label":56,"to":57},"Partners","/partners",{"label":59,"to":60},"Insights","/blog",{"productHeading":5,"companyHeading":62,"resourcesHeading":63,"legalHeading":64,"docsLabel":65,"docsUrl":66,"statementLines":67,"copyright":70,"companyLinks":71,"resourcesLinks":86,"legalLinks":102,"socialLinks":109,"bottomLinks":119},"Company","Resources","Legal","Docs","https://docs.gonimbus.ai",[68,69],"Stop training someone else's model.","Control your AI.","© 2026 Nimbus Intelligence, Inc. All rights reserved.",[72,73,74,75,76,78,81,84],{"label":47,"to":48},{"label":50,"to":51},{"label":53,"to":54},{"label":59,"to":60},{"label":77,"to":57},"Partner Program",{"label":79,"to":80},"Careers","/careers",{"label":82,"to":83},"System status","/status",{"label":7,"to":85},"/contact",[87,90,93,96,99],{"label":88,"to":89},"Glossary","/glossary",{"label":91,"to":92},"Compare","/compare",{"label":94,"to":95},"Evaluate","/evaluate",{"label":97,"to":98},"Problems","/problems",{"label":100,"to":101},"Use cases","/use-cases",[103,106],{"label":104,"to":105},"Terms of Service","/terms",{"label":107,"to":108},"Privacy Policy","/privacy",[110,113,116],{"label":111,"href":112},"LinkedIn","https://www.linkedin.com/company/gonimbusai/",{"label":114,"href":115},"X","https://x.com/gonimbusai",{"label":117,"href":118},"Instagram","https://www.instagram.com/gonimbus_ai/",[120,122,124,127,128],{"label":121,"to":105},"Terms",{"label":123,"to":108},"Privacy",{"label":125,"to":126},"Compliance","/compliance",{"label":82,"to":83},{"label":129,"to":130,"external":131},"LLMs.txt","/llms.txt",true,{"text":133,"prompt":134},"Ask AI about Nimbus",{"I'm researching enterprise intelligence platforms and want to know how Nimbus combines perception, collaboration, and autonomous agents to drive strategic decision-making":135,"platforms":137},{" Summarize the highlights from Nimbus's website":136},"https://gonimbus.ai",[138,143,148,153,158],{"name":139,"label":140,"icon":141,"hrefPrefix":142},"chatgpt","ChatGPT","simple-icons:openai","https://chatgpt.com/?prompt=",{"name":144,"label":145,"icon":146,"hrefPrefix":147},"perplexity","Perplexity","mdi:magnify","https://www.perplexity.ai/search/new?q=",{"name":149,"label":150,"icon":151,"hrefPrefix":152},"grok","Grok","simple-icons:x","https://x.com/i/grok?text=",{"name":154,"label":155,"icon":156,"hrefPrefix":157},"claude","Claude","simple-icons:anthropic","https://claude.ai/new?q=",{"name":159,"label":160,"icon":161,"hrefPrefix":162},"google-ai","Google AI","simple-icons:google","https://www.google.com/search?udm=50&aep=11&q=","content/shared/nav.md","Site navigation",false,null,{"type":168,"value":169,"toc":170},"minimark",[],{"title":171,"searchDepth":172,"depth":172,"links":173},"",2,[],"md","/shared/nav",{"title":164,"description":171},"shared/nav","1dD7ahDRl0SQ4hz53-kKo0tEFrGaLuaztZ3PPfp6a9k",{"id":180,"title":181,"archived":165,"authors":182,"badge":185,"body":187,"date":1086,"definedTerm":1087,"department":166,"description":1088,"extension":174,"eyebrow":166,"faqHeader":1089,"faqs":1092,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":1102,"relatedHeading":166,"seo":1103,"series":1104,"sitemap":131,"status":166,"stem":1105,"subhead":166,"tags":1106,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1111},"content/blog/what-is-loop-engineering.md","What is Loop Engineering",[183],{"name":184,"to":136},"Nimbus Research",{"label":186},"Explainer",{"type":168,"value":188,"toc":1072},[189,197,207,210,245,265,270,281,287,301,319,344,396,408,412,469,472,476,479,485,491,502,505,532,540,548,556,560,572,582,592,602,613,616,620,626,632,642,648,661,667,678,681,685,688,694,699,704,714,729,737,746,749,753,759,765,771,779,788,794,802,810,813,817,820,828,842,853,856,860,867,917,923,926,930,944,953,969,973,1000,1004,1068],[190,191,192,196],"p",{},[193,194,195],"strong",{},"Loop engineering"," is the discipline of compiling the known path for unattended work, detecting when reality diverges from that path, and recording every skip — so the same job can be replayed without a model guessing on the happy path.",[190,198,199,206],{},[200,201,205],"a",{"href":202,"rel":203},"https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai",[204],"nofollow","McKinsey’s State of AI"," keeps finding the same pattern: adoption is widespread, and operational redesign is not. Most organisations use a model somewhere. Few have redesigned how recurring work runs when nobody is watching. Loop engineering is that redesign for the boring path — the job that already has a checklist, a spreadsheet, and a named owner, but still lives in chat and memory.",[190,208,209],{},"Three nouns get conflated in every vendor conversation. Separate them before you compile anything:",[211,212,213,225,235],"ul",{},[214,215,216,219,220,224],"li",{},[193,217,218],{},"Eval loop"," — a sensor that grades a run after the fact. Did the write match the signed payload? Did the test pass? See ",[200,221,223],{"href":222},"eval-loops-for-enterprise-agent-harnesses","eval loops for enterprise agent harnesses",".",[214,226,227,230,231,224],{},[193,228,229],{},"Standing-order loop"," — a job that already exists before a run starts. A trigger admits the run; the known steps execute; a run record shows outputs and skips. See ",[200,232,234],{"href":233},"what-is-a-nimbus-loop","what is a standing-order loop",[214,236,237,240,241,224],{},[193,238,239],{},"Agentic workflow"," — an interactive path that still reasons step by step when the route is not fully known. See ",[200,242,244],{"href":243},"what-is-an-agentic-workflow","what is an agentic workflow",[190,246,247,248,251,252,256,257,260,261,224],{},"Loop engineering is none of those objects. It is the craft of making the ",[193,249,250],{},"known"," path explicit, cheap, and auditable. ",[200,253,255],{"href":254},"what-is-harness-engineering","Harness engineering"," is the parallel craft for the ",[193,258,259],{},"model"," path: tools, hooks, and sensors around non-deterministic steps. You need both. They solve different failure modes. Compare ",[200,262,264],{"href":263},"loop-engineering-vs-harness-engineering","loop engineering vs harness engineering",[266,267,269],"h2",{"id":268},"what-is-loop-engineering","What is loop engineering?",[190,271,272,273,276,277,280],{},"Loop engineering treats recurring operational work as something you ",[193,274,275],{},"compile",", not something you ",[193,278,279],{},"re-describe"," every time.",[190,282,283,286],{},[193,284,285],{},"Compile the known path."," Take the job that already has a finish line — nightly pipeline hygiene, weekly exception report, month-end accrual list — and turn it into a fixed sequence: read these sources, apply these rules, produce these outputs, notify these people. Those are the known steps. It should not depend on someone typing “please do the usual” into a chat box.",[190,288,289,292,293,296,297,300],{},[193,290,291],{},"Detect change."," Reality moves. A new field appears in the CRM. A vendor changes an export format. A policy adds a threshold. Loop engineering includes sensors that notice divergence before the output lands in the wrong inbox. That is adjacent to an ",[200,294,295],{"href":222},"eval loop",", but the emphasis is earlier: catch drift in the ",[193,298,299],{},"inputs and rules",", not only grade the final artefact.",[190,302,303,306,307,310,311,314,315,318],{},[193,304,305],{},"Record skips."," When the path cannot proceed — missing file, ambiguous row, policy exception — the loop must ",[193,308,309],{},"stop",", ",[193,312,313],{},"say why",", and ",[193,316,317],{},"leave a record",". Skips are data. A skip count trending up is how you know the compiled path is stale. Silently “doing your best” overnight is not loop engineering. That is hope.",[190,320,321,326,327,330,331,334,335,339,340,224],{},[200,322,325],{"href":323,"rel":324},"https://docs.langchain.com/oss/python/langchain/agents",[204],"LangChain"," defines Agent = Model + Harness. Loop engineering lives ",[193,328,329],{},"outside"," that equation on the happy path: no model invocation when the path is known. When the path is unknown, you escalate — to a person, or to an ",[200,332,333],{"href":243},"agentic workflow"," inside a proper ",[200,336,338],{"href":337},"what-is-an-enterprise-agent-harness","enterprise agent harness",". See ",[200,341,343],{"href":342},"a-loop-is-not-an-agent","a loop is not an agent",[345,346,350],"pre",{"className":347,"code":348,"language":349,"meta":171,"style":171},"language-mermaid shiki shiki-themes github-light github-dark","flowchart LR\n  compile[\"Write the known steps\"] --> wait[\"Wait for a trigger\"]\n  wait --> check{\"Does the world match?\"}\n  check -->|yes| run[\"Run the known steps\"]\n  check -->|no| skip[\"Skip and say why\"]\n  run --> record[\"Leave a run record\"]\n  skip --> record\n","mermaid",[351,352,353,361,366,372,378,384,390],"code",{"__ignoreMap":171},[354,355,358],"span",{"class":356,"line":357},"line",1,[354,359,360],{},"flowchart LR\n",[354,362,363],{"class":356,"line":172},[354,364,365],{},"  compile[\"Write the known steps\"] --> wait[\"Wait for a trigger\"]\n",[354,367,369],{"class":356,"line":368},3,[354,370,371],{},"  wait --> check{\"Does the world match?\"}\n",[354,373,375],{"class":356,"line":374},4,[354,376,377],{},"  check -->|yes| run[\"Run the known steps\"]\n",[354,379,381],{"class":356,"line":380},5,[354,382,383],{},"  check -->|no| skip[\"Skip and say why\"]\n",[354,385,387],{"class":356,"line":386},6,[354,388,389],{},"  run --> record[\"Leave a run record\"]\n",[354,391,393],{"class":356,"line":392},7,[354,394,395],{},"  skip --> record\n",[190,397,398,403,404,407],{},[200,399,402],{"href":400,"rel":401},"https://www.thoughtworks.com/insights/articles/operating-system-enterprise-ai",[204],"Thoughtworks’ operating system for enterprise AI"," splits harness layers from organisational ownership. Loop engineering is the operator layer for ",[193,405,406],{},"unattended"," work: who owns the known steps, who gets paged on skips, how exceptions re-enter the human queue. It is not layer 1 (pick a model). It is whether Tuesday’s job is the same object as Thursday’s.",[266,409,411],{"id":410},"words-youll-hear","Words you’ll hear",[211,413,414,420,430,436,447,453,463],{},[214,415,416,419],{},[193,417,418],{},"Known path."," The fixed steps for a job you already know how to do. Not a prompt. Not “figure it out.” A sequence you can replay.",[214,421,422,425,426,224],{},[193,423,424],{},"Trigger."," What admits a run: schedule, file arrival, threshold, or a deliberate manual start. See ",[200,427,429],{"href":428},"six-things-that-start-a-loop","six things that start a loop",[214,431,432,435],{},[193,433,434],{},"Skip."," A deliberate halt when the path cannot proceed safely. Recorded, not hidden.",[214,437,438,441,442,446],{},[193,439,440],{},"Standing order."," A loop that waits for its trigger on a ",[200,443,445],{"href":444},"what-is-an-ai-workstream","workstream",". The job exists before the run starts.",[214,448,449,452],{},[193,450,451],{},"Run page."," One record per execution: inputs observed, steps taken, outputs attached, skips listed with reasons.",[214,454,455,458,459,224],{},[193,456,457],{},"Outputs vs actions."," Outputs are artefacts (report, list, draft). Actions are writes to live systems. Loop engineering defaults to outputs first; actions need ",[200,460,462],{"href":461},"what-is-write-back-governance","write-back governance",[214,464,465,468],{},[193,466,467],{},"Wizard, not chat ritual."," Operators start from a form with known fields, not an open-ended thread.",[190,470,471],{},"If a vendor uses “loop” for an eval sensor, a cron plus a prompt, or a multi-agent graph, ask which of the nouns above they actually mean. Vocabulary drift is how programmes buy the wrong control.",[266,473,475],{"id":474},"why-you-should-care","Why you should care",[190,477,478],{},"If recurring work still lives in direct messages and memory, you pay three taxes every quarter.",[190,480,481,484],{},[193,482,483],{},"The reinterpretation tax."," Someone re-explains the job in Slack. Someone else runs a slightly different version. Audit asks what ran last month and the answer is a person’s name.",[190,486,487,490],{},[193,488,489],{},"The overnight tax."," On-call gets paged. The only documentation is a clever prompt. The model guesses at ambiguous rows because nobody defined a skip.",[190,492,493,496,497,501],{},[193,494,495],{},"The attribution tax."," Spend and outcomes cannot be tied to a named job. ",[200,498,500],{"href":202,"rel":499},[204],"McKinsey"," shows usage without operational redesign; loop engineering is redesign for work that should not need a meeting to start.",[190,503,504],{},"It affects you if:",[211,506,507,510,513,524],{},[214,508,509],{},"the same report runs every week but only one person knows the steps",[214,511,512],{},"exceptions are handled in side threads with no record",[214,514,515,516,519,520,523],{},"auditors ask for evidence of ",[193,517,518],{},"what"," ran, not ",[193,521,522],{},"what was said"," in chat",[214,525,526,527,531],{},"you want ",[200,528,530],{"href":529},"what-is-collaborative-ai","collaborative AI"," on outcomes, not personal copilots on fragments",[190,533,534,539],{},[200,535,538],{"href":536,"rel":537},"https://aiindex.stanford.edu/",[204],"Stanford HAI’s AI Index"," tracks capability and deployment. Capability rises faster than operational maturity. Loop engineering is maturity for the path you already know.",[190,541,542,547],{},[200,543,546],{"href":544,"rel":545},"https://www.nist.gov/itl/ai-risk-management-framework",[204],"NIST’s AI RMF"," Measure and Manage steps assume you can observe behaviour and change controls. A compiled loop with skip logs is observable. A chat thread is not.",[190,549,550,555],{},[200,551,554],{"href":552,"rel":553},"https://www.iso.org/standard/42001",[204],"ISO/IEC 42001"," asks for documented operational controls and named actors. A standing order on a workstream with a roster beats a shared login to a consumer model.",[266,557,559],{"id":558},"loop-engineering-vs-adjacent-crafts","Loop engineering vs adjacent crafts",[190,561,562,565,566,568,569,224],{},[193,563,564],{},"Harness engineering."," Runtime around the model: tools, hooks, eval sensors. Necessary when the step requires judgement or generation. See ",[200,567,264],{"href":263}," and ",[200,570,571],{"href":254},"what is harness engineering",[190,573,574,577,578,224],{},[193,575,576],{},"Eval loops."," Grade a run. Essential on write paths and agent steps. Not the same as admitting the run. See ",[200,579,581],{"href":580},"how-to-evaluate-loop-engineering","how to evaluate loop engineering",[190,583,584,587,588,224],{},[193,585,586],{},"Workflow automation (RPA)."," Brittle screen replay. Loop engineering prefers API reads, explicit rules, and recorded skips over pretending the interface never changed. See ",[200,589,591],{"href":590},"loop-vs-rpa","loop vs RPA",[190,593,594,597,598,224],{},[193,595,596],{},"Agentic workflow."," Reasoning path when the route is not fully known. Loop engineering handles the known segment; agentic workflow handles exploration. See ",[200,599,601],{"href":600},"loop-vs-workflow-vs-agent","loop vs workflow vs agent",[190,603,604,607,608,612],{},[193,605,606],{},"Chat ops."," Fast for novel problems. Expensive and un-auditable for recurring ones. ",[200,609,611],{"href":610},"multiplayer-ai-and-multi-agent-ai","Multiplayer AI"," in a shared room is for collaboration; a loop is for repetition.",[190,614,615],{},"The test is simple. If a new hire can follow numbered steps and produce the same artefact, compile it. If the next step depends on reading the case, harness it. If you cannot tell which you are doing, you will agent-wrap a checklist and call it innovation.",[266,617,619],{"id":618},"how-to-do-it","How to do it",[190,621,622,625],{},[193,623,624],{},"1. Name one recurring job with a finish line."," Not “AI for finance.” “Weekly pipeline exception list for EMEA” is a job.",[190,627,628,631],{},[193,629,630],{},"2. Write the path as steps a new hire could follow."," If the path cannot be written, it is not ready to compile. It is still tribal knowledge.",[190,633,634,637,638,224],{},[193,635,636],{},"3. Separate outputs from actions."," Default to read-only connectors and artefact outputs. Promote to signed writes only with ",[200,639,641],{"href":640},"governance-as-a-multiplayer-primitive","governance as a multiplayer primitive",[190,643,644,647],{},[193,645,646],{},"4. Define skips explicitly."," Missing source file → skip with reason. Ambiguous owner on row 47 → skip, assign to queue. Never “best effort fill.”",[190,649,650,653,654,568,657,224],{},[193,651,652],{},"5. Attach the loop to a workstream."," Brief, connectors, roster, budget. See ",[200,655,656],{"href":444},"what is an AI workstream",[200,658,660],{"href":659},"four-pillars-of-an-enterprise-ai-platform","four pillars of an enterprise AI platform",[190,662,663,666],{},[193,664,665],{},"6. Review skip rates on a cadence."," Skips are product feedback. A rising skip count means the steps or the world changed.",[190,668,669,672,673,677],{},[193,670,671],{},"7. Keep agents off the happy path."," ",[200,674,676],{"href":675},"agents-should-be-disposable","Agents should be disposable"," for exploration. The compiled loop should survive model churn.",[190,679,680],{},"A useful intermediate artefact is a one-page write-up of the known path: trigger, sources, rules, outputs, skip classes, named owner, named exception queue. If you cannot fill that page, you are not compiling — you are hoping a prompt will remember.",[266,682,684],{"id":683},"a-worked-example-weekly-pipeline-exceptions","A worked example: weekly pipeline exceptions",[190,686,687],{},"Revenue operations runs the same exception pass every Monday: pull CRM opportunities in stale stages, join the account executive’s sheet, flag conflicts, send finance a list. Today it lives in one person’s notebook and a Slack reminder.",[190,689,690,693],{},[193,691,692],{},"Compile."," Step one: read CRM with agreed filters. Step two: read the sheet from the shared drive path. Step three: apply conflict rules documented in the wiki. Step four: produce a table artefact. Step five: notify finance and the regional lead on the workstream roster.",[190,695,696,698],{},[193,697,291],{}," If the sheet tab name changes, skip — do not guess. If CRM adds a required field, the sensor fires before rows silently drop.",[190,700,701,703],{},[193,702,305],{}," Row with two owners → skip row, add to human queue. Missing sheet → skip run, page on-call. Every skip appears on the run page.",[190,705,706,707,710,711,713],{},"No model on the happy path. If a row needs judgement (“is this deal actually committed?”), the loop ",[193,708,709],{},"escalates"," to a person on the roster — or to an ",[200,712,333],{"href":243}," if you later choose to add one for that class only. The default remains: do not guess.",[190,715,716,717,719,720,568,724,728],{},"This is ",[200,718,530],{"href":529}," for revenue operations without turning Monday into a chat ritual. Compare ",[200,721,723],{"href":722},"loops-for-revenue-operations","loops for revenue operations",[200,725,727],{"href":726},"collaborative-ai-for-finance-and-planning","collaborative AI for finance and planning"," when the artefact is a forecast pack.",[190,730,731,736],{},[200,732,735],{"href":733,"rel":734},"https://www.anthropic.com/engineering/building-effective-agents",[204],"Anthropic’s guidance on building effective agents"," warns against agentic complexity where a fixed pipeline suffices. Loop engineering is the operational form of that advice: use the simplest architecture that completes the job.",[190,738,739,740,745],{},"Research on human–AI teams (",[200,741,744],{"href":742,"rel":743},"https://www.nature.com/articles/s41562-022-01358-0",[204],"Yang et al., Nature Human Behaviour, 2022",") shows performance gains when roles are clear and humans retain override. Loops encode that split: machine for the known path, human for the exception queue.",[190,747,748],{},"Walk the same Monday after compile. The trigger fires at 06:00. The loop reads 1,842 opportunities and 31 sheet rows. It emits 14 exceptions and 3 skips (two dual-owned rows, one missing close date). Finance opens the run page, not a forwarded screenshot. The dual-owned rows sit in a queue with a reason. Nobody re-typed “please do the usual.” That is the job, compiled.",[266,750,752],{"id":751},"what-goes-wrong","What goes wrong",[190,754,755,758],{},[193,756,757],{},"Compiling a wish."," “AI for close” is not a known path. If you cannot name the sources and the finish line, you are still in discovery. Run the job manually twice and write what you actually did.",[190,760,761,764],{},[193,762,763],{},"Best-effort fills."," A missing owner becomes “unassigned” or a guessed name. That is an agent decision without a harness. It violates the skip rule and teaches operators that silence means success.",[190,766,767,770],{},[193,768,769],{},"Chat as the compiler."," A long system prompt is not a version of the known path. Prompts drift. New hires cannot start the job from a prompt they have never seen.",[190,772,773,776,777,224],{},[193,774,775],{},"Eval as admission."," A sensor that grades runs does not start them. You still need a standing order. See ",[200,778,223],{"href":222},[190,780,781,784,785,224],{},[193,782,783],{},"Actions before outputs."," Writing to CRM in week one hides a bad path inside live records. Prove the table against the manual baseline first. Then quote a write. See ",[200,786,787],{"href":461},"what is write-back governance",[190,789,790,793],{},[193,791,792],{},"Ownerless paths."," If nobody reviews skip trends, the compiled path rots. The world changes; the steps do not; skip rates climb; people go back to Slack.",[190,795,796,799,800,224],{},[193,797,798],{},"Agent-wrapping the checklist."," Every Monday a model re-reads instructions and re-derives spreadsheet logic. Cost scales with repetition. Drift scales with temperature. Audit sees a transcript, not which version of the steps ran. See ",[200,801,343],{"href":342},[190,803,804,807,808,224],{},[193,805,806],{},"RPA theatre."," Replaying clicks looks like a compiled path until the interface changes. Prefer APIs and explicit skips. See ",[200,809,591],{"href":590},[190,811,812],{},"Failure looks like a green check and a wrong list. Success looks like a skip with a reason and a human on the roster.",[266,814,816],{"id":815},"governance-and-regulation-plain-english","Governance and regulation (plain English)",[190,818,819],{},"Loop engineering supports controls auditors already ask for, without requiring you to become a lawyer.",[190,821,822,827],{},[200,823,826],{"href":824,"rel":825},"https://www.govinfo.gov/content/pkg/PLAW-107publ204/html/PLAW-107publ204.htm",[204],"Sarbanes-Oxley"," cares about trails for financial reporting. A compiled loop that produces a signed exception list — with skips recorded — is easier to walk than “the model said it looked fine.”",[190,829,830,831,568,836,841],{},"The ",[200,832,835],{"href":833,"rel":834},"https://artificialintelligenceact.eu/",[204],"EU AI Act",[200,837,840],{"href":838,"rel":839},"https://gdpr.eu/",[204],"GDPR"," stress purpose limitation and documentation. A standing order on a scoped workstream states purpose (this job), data (these connectors), and actors (this roster). A god workspace does not.",[190,843,844,848,849,852],{},[200,845,847],{"href":846},"what-is-human-in-the-loop-ai","Human-in-the-loop"," remains mandatory for writes and for judgement calls. Loop engineering makes the ",[193,850,851],{},"automatic"," segment automatic; it does not remove named signers from actions.",[190,854,855],{},"Regulators rarely use the phrase “loop engineering.” They ask operational questions: who decided, what ran, can you replay it. A compiled path with a run page answers those questions for unattended segments. A chat log answers them poorly.",[266,857,859],{"id":858},"how-to-start-this-quarter","How to start this quarter",[190,861,862,863,866],{},"Pick ",[193,864,865],{},"one"," recurring job. Not three. One.",[868,869,870,876,884,890,896,902,908],"ol",{},[214,871,872,875],{},[193,873,874],{},"Document the path"," as numbered steps. If step three is “ask the person who always knows,” stop — that step is a skip queue, not a step.",[214,877,878,881,882,224],{},[193,879,880],{},"Create a workstream"," with the brief, read-only connectors, and the roster who cares about the output. See ",[200,883,656],{"href":444},[214,885,886,889],{},[193,887,888],{},"Implement outputs only"," for the first four weeks. No CRM writes. No journals.",[214,891,892,895],{},[193,893,894],{},"Run on schedule"," twice alongside the legacy process. Diff the artefacts, not the vibes.",[214,897,898,901],{},[193,899,900],{},"Add one skip rule"," you wish you had last month. Missing file, ambiguous row, stale tab name.",[214,903,904,907],{},[193,905,906],{},"Review skip count"," in the fifth week. Update the steps or the wiki — that is loop engineering, not prompt tuning.",[214,909,910,913,914,916],{},[193,911,912],{},"Decide whether any exception class"," deserves an ",[200,915,333],{"href":243},". Most will not, yet.",[190,918,919,922],{},[200,920,921],{"href":580},"How to evaluate loop engineering"," is the buying sheet: can you compile, detect, skip, and replay without opening chat?",[190,924,925],{},"Score any product the way you score an operations tool: same job, same output, recorded skips, named humans on exceptions. If the demo starts in a chat box, you are scoring a copilot.",[266,927,929],{"id":928},"how-this-shows-up-in-nimbus","How this shows up in Nimbus",[190,931,932,933,936,937,939,940,943],{},"The platform names a compiled standing order a ",[193,934,935],{},"Loop",". It lives on a ",[200,938,445],{"href":444},": brief, connectors, roster, and ",[200,941,942],{"href":461},"governance",". Operators configure the trigger and the known steps from a wizard; each execution gets a run page with outputs and skips.",[190,945,946,947,949,950,224],{},"Loop engineering is the practice around that object — compiling the path, defining skip classes, reviewing skip rates — not a button labelled engineering. Writes still follow ",[200,948,462],{"href":461},". Model steps, if you attach any, sit under ",[200,951,952],{"href":254},"harness engineering",[190,954,955,956,310,959,314,961,963,964,568,967,224],{},"See ",[200,957,958],{"href":233},"what is a Nimbus Loop",[200,960,264],{"href":263},[200,962,343],{"href":342},". Product surfaces: ",[200,965,966],{"href":32},"workstreams",[200,968,942],{"href":40},[266,970,972],{"id":971},"related-reading","Related reading",[211,974,975,980,985,990,995],{},[214,976,977],{},[200,978,979],{"href":233},"What is a Nimbus Loop",[214,981,982],{},[200,983,984],{"href":263},"Loop engineering vs harness engineering",[214,986,987],{},[200,988,989],{"href":342},"A loop is not an agent",[214,991,992],{},[200,993,994],{"href":254},"What is harness engineering",[214,996,997],{},[200,998,999],{"href":444},"What is an AI workstream",[266,1001,1003],{"id":1002},"sources","Sources",[211,1005,1006,1012,1018,1024,1030,1035,1041,1047,1052,1058,1063],{},[214,1007,1008],{},[200,1009,1011],{"href":202,"rel":1010},[204],"McKinsey, The state of AI in 2025",[214,1013,1014],{},[200,1015,1017],{"href":323,"rel":1016},[204],"LangChain, Agents",[214,1019,1020],{},[200,1021,1023],{"href":400,"rel":1022},[204],"Thoughtworks, The operating system for enterprise AI",[214,1025,1026],{},[200,1027,1029],{"href":544,"rel":1028},[204],"NIST AI RMF",[214,1031,1032],{},[200,1033,554],{"href":552,"rel":1034},[204],[214,1036,1037],{},[200,1038,1040],{"href":536,"rel":1039},[204],"Stanford HAI, AI Index",[214,1042,1043],{},[200,1044,1046],{"href":733,"rel":1045},[204],"Anthropic, Building effective agents",[214,1048,1049],{},[200,1050,744],{"href":742,"rel":1051},[204],[214,1053,1054],{},[200,1055,1057],{"href":824,"rel":1056},[204],"Sarbanes-Oxley Act of 2002",[214,1059,1060],{},[200,1061,835],{"href":833,"rel":1062},[204],[214,1064,1065],{},[200,1066,840],{"href":838,"rel":1067},[204],[1069,1070,1071],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":171,"searchDepth":172,"depth":172,"links":1073},[1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085],{"id":268,"depth":172,"text":269},{"id":410,"depth":172,"text":411},{"id":474,"depth":172,"text":475},{"id":558,"depth":172,"text":559},{"id":618,"depth":172,"text":619},{"id":683,"depth":172,"text":684},{"id":751,"depth":172,"text":752},{"id":815,"depth":172,"text":816},{"id":858,"depth":172,"text":859},{"id":928,"depth":172,"text":929},{"id":971,"depth":172,"text":972},{"id":1002,"depth":172,"text":1003},"2026-09-12","loop engineering","Loop engineering is the discipline of compiling the known path for unattended work, detecting when reality diverges, and recording skips — not the runtime around a model, and not an eval sensor.",{"eyebrow":1090,"title":1091},"Common questions","Loops, harnesses, and sensors",[1093,1096,1099],{"question":1094,"answer":1095},"Is loop engineering the same as harness engineering?","No. Harness engineering designs the runtime around a model — which tools it may call, which hooks refuse a bad action, and which sensors grade the claim after the fact. Loop engineering compiles the known path for work that should not need a model on the happy path, and records when that path cannot proceed. Use harness engineering when a step requires generation or judgement. Use loop engineering when the steps are already known and the risk is silent drift rather than a clever prompt. Start with the compiled path if a checklist already exists. Refuse to treat hooks and eval sensors as a substitute for numbered steps you can replay without tokens.",{"question":1097,"answer":1098},"Is an eval loop the same as a Nimbus Loop?","No. An eval loop is a sensor that grades a run after the fact — tests, schemas, read-backs, signer checks. A standing-order loop admits a run when a trigger fires and then executes the known steps. Confusing the two is how programmes buy a grading harness and still start Monday's job from Slack. Use an eval loop on writes and on any model step that needs independent verification. Use a standing order when the job should exist before anyone types. Refuse to treat a score as proof that the same job ran, or a trigger as proof that the output was correct. See eval loops for enterprise agent harnesses and what is a Nimbus Loop.",{"question":1100,"answer":1101},"Do we still need agents if we have loop engineering?","Yes, for the unknown path. Loop engineering makes the known path cheap and unattended: read, rule, output, notify. When a row is ambiguous or a source is missing, the compiled path should skip — not invent. Agents and agentic workflows exist for exploration and judgement when the route is not fully known. Attach them only to an explicit exception class, inside a harness with stops and sensors. Refuse to put a model on the happy path of a job that already has a checklist, and refuse to leave exceptions as silent best-effort fills overnight.","/blog/what-is-loop-engineering",{"title":181,"description":1088},"explainer","blog/what-is-loop-engineering",[1104,1107,1108,1109,1110],"loop-engineering","loops","enterprise-ai","operations","qhxKV2_rt_cAEzSvf-oskijE-yUyn8jE5GsfZpSXdmM",{"hero":1113,"id":1115,"title":1116,"archived":165,"authors":166,"badge":166,"body":1117,"date":166,"definedTerm":166,"department":166,"description":1121,"extension":174,"eyebrow":1122,"faqHeader":166,"faqs":166,"footerBand":1123,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":60,"relatedHeading":1129,"seo":1130,"series":166,"sitemap":131,"status":166,"stem":1131,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1132},{"filename":1114},"u2221455217_Flat_design_of_a_futuristic_minimalist_landscape__5d589295-cdea-4ea9-a262-be766881accf_1.png","content/blog/index.md","Exploring the future of intelligence.",{"type":168,"value":1118,"toc":1119},[],{"title":171,"searchDepth":172,"depth":172,"links":1120},[],"Deep dives into pre-cognitive intelligence, sentient enterprises, and the evolving landscape of AI-driven business transformation.","Latest Research",{"headline":1124,"description":1125,"primaryLabel":1126,"primaryTo":1127,"secondaryLabel":1128,"secondaryTo":12},"Stay at the frontier.","Subscribe for product updates and new insights.","Subscribe","/newsletter","Explore the platform","More research",{"title":1116,"description":1121},"blog/index","BFSWGYO9bcTlaulivKYWyg08_DJHsdGg3OC6g_CG1Hw",[1134,1814],{"id":1135,"title":1136,"archived":165,"authors":1137,"badge":1139,"body":1140,"date":1804,"definedTerm":166,"department":166,"description":1805,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":1806,"relatedHeading":166,"seo":1807,"series":1104,"sitemap":131,"status":166,"stem":1808,"subhead":166,"tags":1809,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1813},"content/blog/what-is-an-agent-harness.md","What is an Agent Harness",[1138],{"name":184,"to":136},{"label":186},{"type":168,"value":1141,"toc":1786},[1142,1158,1167,1181,1195,1197,1300,1316,1318,1325,1327,1344,1359,1374,1382,1386,1389,1405,1417,1434,1446,1454,1470,1482,1486,1489,1492,1500,1508,1528,1550,1554,1566,1575,1586,1593,1597,1602,1605,1609,1612,1616,1624,1628,1631,1635,1642,1646,1653,1657,1670,1672,1683,1685],[190,1143,1144,1145,1148,1149,1153,1154,1157],{},"An ",[193,1146,1147],{},"agent harness"," is the software around a large language model that turns next-token prediction into work: tools, memory, a loop, permissions, and a stop. ",[200,1150,1152],{"href":323,"rel":1151},[204],"LangChain’s 2026 documentation"," writes the equation in plain type: ",[193,1155,1156],{},"Agent = Model + Harness",". The model reasons. The harness is everything else.",[190,1159,1160,1161,1166],{},"That sentence is not marketing. An unaided model is stateless. It produces text. It cannot keep a file, call Salesforce, fail a linter, or refuse a write. The ",[200,1162,1165],{"href":1163,"rel":1164},"https://en.wikipedia.org/wiki/Agent_harness",[204],"Wikipedia entry on agent harnesses"," records the same split, and notes that the UK’s AI Security Institute already described an AI agenthe model plus scaffolding in 2023. The industry spent two years arguing about which model was smartest. In 2026 it started arguing about which environment the model was sitting in.",[190,1168,1169,1174,1175,1180],{},[200,1170,1173],{"href":1171,"rel":1172},"https://www.databricks.com/blog/ai-harness",[204],"Databricks"," uses a body-and-brain analogy: the model is the brain; the harness is the body and the workspace. ",[200,1176,1179],{"href":1177,"rel":1178},"https://www.langchain.com/blog/the-anatomy-of-an-agent-harness",[204],"LangChain’s anatomy post"," is more mechanical. A harness is every piece of code, configuration, and execution logic that is not the model itself. A raw model is not an agent. It becomes one when a harness gives it state, tool execution, feedback loops, and constraints that do not depend on the model’s mood.",[190,1182,1183,1184,1186,1187,1191,1192,1194],{},"This article is the definition. ",[200,1185,994],{"href":254}," is the practice of tightening that environment when the agent fails. ",[200,1188,1190],{"href":1189},"inner-vs-outer-agent-harness","Inner vs outer agent harness"," is the cut between a repo and a company. An ",[200,1193,338],{"href":337}," is the outer case: operators, signers, a ledger.",[266,1196,411],{"id":410},[211,1198,1199,1205,1211,1217,1228,1244,1264,1279,1288],{},[214,1200,1201,1204],{},[193,1202,1203],{},"Harness / scaffolding."," Same object, two eras. Scaffolding is the 2023–2024 research word. Harness is the 2026 product word. Both mean the runtime around the weights.",[214,1206,1207,1210],{},[193,1208,1209],{},"Agent."," The composed system. Not the model. Not the chat UI. If you can swap the model and the job still runs, you were looking at the harness.",[214,1212,1213,1216],{},[193,1214,1215],{},"Loop."," Plan, act, observe, repeat — the ReAct-shaped cycle popularised in 2022 and now owned by the harness, not by the prompt. The harness dispatches the tool, returns the result, and decides whether to continue.",[214,1218,1219,1222,1223,1227],{},[193,1220,1221],{},"Stop."," Budget, max steps, empty retrieval, tool error, human cancel, wait-for-named-signer. “The model says it is done” is a suggestion. ",[200,1224,1226],{"href":733,"rel":1225},[204],"Anthropic’s note on building effective agents"," is honest about this: encoding the job and deciding what “done” means is the boring part that actually matters.",[214,1229,1230,1233,1234,1239,1240,224],{},[193,1231,1232],{},"Tools / skills / MCP."," Hands. The ",[200,1235,1238],{"href":1236,"rel":1237},"https://modelcontextprotocol.io/specification/2025-11-25/index",[204],"Model Context Protocol"," is a common plug so hosts can call the same servers. Plumbing. A plug is not a permission model. See ",[200,1241,1243],{"href":1242},"what-is-model-context-protocol","What is Model Context Protocol",[214,1245,1246,1249,1250,1255,1256,1259,1260,1263],{},[193,1247,1248],{},"Hooks / middleware."," Deterministic intercepts on the loop. ",[200,1251,1254],{"href":1252,"rel":1253},"https://code.claude.com/docs/en/hooks",[204],"Claude Code hooks"," run shell or HTTP at ",[351,1257,1258],{},"PreToolUse"," and can block with exit code 2. LangChain middleware is the same instinct in a library. A line in ",[351,1261,1262],{},"CLAUDE.md"," is advice. A hook is a gate.",[214,1265,1266,672,1269,1274,1275,1278],{},[193,1267,1268],{},"Guides and sensors.",[200,1270,1273],{"href":1271,"rel":1272},"https://martinfowler.com/articles/harness-engineering.html",[204],"Birgitta Böckeler’s framing on martinfowler.com",": feed-forward context (conventions, architecture, ",[351,1276,1277],{},"AGENTS.md",") versus feedback (linters, tests, reviewers). A harness that only prompts is half a harness.",[214,1280,1281,1284,1285,224],{},[193,1282,1283],{},"Inner harness."," Coding agents: Claude Code, Cursor, Codex. Workspace is a repository. Tests are the eval. See ",[200,1286,1287],{"href":1189},"inner vs outer",[214,1289,1290,1293,1294,310,1296,1299],{},[193,1291,1292],{},"Outer / enterprise harness."," Operators. Connectors, ",[200,1295,966],{"href":444},[200,1297,1298],{"href":461},"write-back",", a ledger. Workspace is the company. A passing unit test does not prove a CRM write was authorised.",[190,1301,1302,1303,310,1306,310,1309,310,1311,310,1313,1315],{},"Nimbus is one outer harness: ",[200,1304,1305],{"href":28},"wiki",[200,1307,1308],{"href":20},"agent teams",[200,1310,966],{"href":32},[200,1312,942],{"href":40},[200,1314,23],{"href":24},". Claude Code is a strong inner harness. Calling either “an agent” without naming the harness is how RFPs buy a model and inherit someone else’s loop.",[266,1317,475],{"id":474},[190,1319,1320,1324],{},[200,1321,1323],{"href":202,"rel":1322},[204],"McKinsey’s 2025 State of AI survey"," is the scale gap in one chart: most organisations use AI in at least one function; far fewer have begun to scale. Copilots produce usage. Harnesses produce jobs that finish under a stop. If your programme is “we rolled out ChatGPT Enterprise,” you have licensed a model surface. You have not yet chosen a harness for the work that writes back.",[190,1326,504],{},[211,1328,1329,1332,1335,1338,1341],{},[214,1330,1331],{},"the job is multi-step and tool-using, not a single completion",[214,1333,1334],{},"a live system can change (CRM, ERP, repo, ticket queue)",[214,1336,1337],{},"someone will ask, six months later, why a field or a file changed",[214,1339,1340],{},"you need to swap models without rewriting every tool",[214,1342,1343],{},"you already noticed that a better model still skips the linter, invents a policy, or pastes into Salesforce",[190,1345,1346,1347,1352,1353,1358],{},"In February 2024 a British Columbia tribunal held Air Canada responsible for a chatbot that invented a bereavement-fare policy. ",[200,1348,1351],{"href":1349,"rel":1350},"https://www.cbc.ca/news/canada/british-columbia/air-canada-chatbot-lawsuit-1.7116416",[204],"CBC reported"," that the airline’s argument — the chatbot is a separate legal entity — failed. That failure is a missing harness, not a missing model: no quote, no signer, no stop before a commitment left the building. In 2023 a New York court ",[200,1354,1357],{"href":1355,"rel":1356},"https://www.reuters.com/legal/new-york-lawyers-sanctioned-using-fake-chatgpt-cases-legal-brief-2023-06-22/",[204],"sanctioned lawyers"," who filed ChatGPT-invented cases. Ungated generation reached a system of record. CRM writes are the operational twin with money attached.",[190,1360,1361,1364,1365,1368,1369,1373],{},[200,1362,546],{"href":544,"rel":1363},[204]," organises Govern, Map, Measure, Manage. ",[200,1366,554],{"href":552,"rel":1367},[204]," is an AI ",[1370,1371,1372],"em",{},"management system"," standard. Neither is implemented by a system prompt that says “be careful.” They are implemented by a runtime that can refuse a tool call.",[190,1375,1376,1381],{},[200,1377,1380],{"href":1378,"rel":1379},"https://addyosmani.com/blog/agent-harness-engineering/",[204],"Addy Osmani’s 2026 write-up"," states the engineering claim operators keep rediscovering: a decent model with a great harness beats a great model with a bad harness. When the agent does something dumb, the default instinct is to blame the weights. Harness engineering treats most of those failures as configuration. That is the rest of this cluster.",[266,1383,1385],{"id":1384},"what-a-harness-actually-contains","What a harness actually contains",[190,1387,1388],{},"LangChain’s anatomy and Databricks’s list converge on the same parts. You can inspect each one before you buy a product or assemble a library.",[190,1390,1391,1394,1395,1400,1401,1404],{},[193,1392,1393],{},"The loop."," The harness owns plan → act → observe. It executes the tool. It feeds the result back. It enforces max steps and a cost budget so a stuck agent cannot run forever. ",[200,1396,1399],{"href":1397,"rel":1398},"https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents",[204],"Anthropic’s long-running harness note"," shows why this is not a prompt: tasks that outlast one context window need an initializer, incremental sessions, git commits, and a progress file the ",[1370,1402,1403],{},"next"," session can read. The model does not remember. The environment does.",[190,1406,1407,1410,1411,1416],{},[193,1408,1409],{},"Tools and execution."," Search, shell, apply_patch, browser, CRM, ERP. The model proposes a call. The harness runs it in a sandbox or against an adapter, handles timeouts, and returns structured results. A generic HTTP tool with a production token is not a harness. It is a confused deputy. ",[200,1412,1415],{"href":1413,"rel":1414},"https://genai.owasp.org/llm-top-10/",[204],"OWASP’s Top 10 for LLM applications"," still applies: excessive agency and unbounded tool use are design failures, not model quirks.",[190,1418,1419,1422,1423,1425,1426,568,1430,224],{},[193,1420,1421],{},"Context and memory."," Working memory is the current window. Session state is progress for this job. Durable memory is files, ",[351,1424,1277],{},", a wiki, or a graph — something that survives compaction. Anthropic’s initializer/coding-agent split is a memory design: feature lists and commits as cross-session state. A company that stores “what we approved” only in Slack search does not have durable memory for operations. See ",[200,1427,1429],{"href":1428},"what-is-a-lifecycle-graph","What is a lifecycle graph",[200,1431,1433],{"href":1432},"what-is-a-company-wiki-for-ai-agents","What is a company wiki for AI agents",[190,1435,1436,1439,1440,1442,1443,1445],{},[193,1437,1438],{},"Permissions and hooks."," Who may call which tool, with which identity, on which object. Claude Code’s ",[351,1441,1258],{}," hook can deny Bash regardless of what the model intended. That is the inner version of ",[200,1444,462],{"href":461},": the write API is unreachable until a named role signs a quoted payload. A prompt that says “ask Legal first” is not this layer. The model can forget. The user can paste anyway.",[190,1447,1448,1451,1452,224],{},[193,1449,1450],{},"Feedback."," Compilers, tests, linters, schema validators, human review. Böckeler’s sensors. Without them the loop is open: the model reports success and the harness believes it. Terminal-Bench and SWE-bench exist because coding harnesses can grade against an environment. Enterprise writes need an equivalent: did the signed payload match what executed. See ",[200,1453,223],{"href":222},[190,1455,1456,1459,1460,1464,1465,1469],{},[193,1457,1458],{},"Orchestration."," Subagents, hand-offs, model routing. Optional until the job already splits in the organisation. ",[200,1461,1463],{"href":1462},"what-is-multi-agent-ai","Multi-agent AI"," is the pattern. ",[200,1466,1468],{"href":1467},"agent-team-architecture","Agent team architecture"," is the hiring object. A harness that spawns specialists without a stop is a faster way to share a production login.",[190,1471,1144,1472,1474,1475,1477,1478,1481],{},[200,1473,333],{"href":243}," is a designed sequence with business stops. The harness is the runtime that can actually run that sequence. Mixing those two words is how demos skip isolation. A ",[200,1476,445],{"href":444}," is the company object that hosts the job: brief, connectors, people, budget. In Nimbus the workstream is that folder; the harness is wiki + teams + connectors + gates + graph sitting around whichever model ",[200,1479,1480],{"href":45},"routing"," picks for the step.",[266,1483,1485],{"id":1484},"what-is-not-a-harness","What is not a harness",[190,1487,1488],{},"A chat window with plugins. The human is still the message bus, the permission system, and the audit log.",[190,1490,1491],{},"A system prompt. Advice inside the window. Useful. Not a stop.",[190,1493,1494,1495,1499],{},"A policy PDF. ",[200,1496,1498],{"href":1497},"what-is-ai-governance","What is AI governance"," is a management claim. A harness is whether an unapproved write is impossible.",[190,1501,1502,1503,1507],{},"MCP on its own. A standard plug. See ",[200,1504,1506],{"href":1505},"mcp-for-enterprise-integrations","MCP for enterprise integrations",". If the server can PATCH Salesforce from natural language, you built a bypass.",[190,1509,1510,1511,1519,1520,1523,1524,224],{},"A framework on its own. ",[200,1512,1515,1516],{"href":1513,"rel":1514},"https://www.langchain.com/blog/how-to-build-a-custom-agent-harness",[204],"LangChain’s ",[351,1517,1518],{},"create_agent"," is a way to ",[1370,1521,1522],{},"assemble"," a harness. CrewAI, LangGraph, and Pydantic AI are in the same neighbourhood. You still have to choose tools, stops, and identity. See ",[200,1525,1527],{"href":1526},"agent-harness-vs-agent-framework","agent harness vs agent framework",[190,1529,1530,1531,568,1536,1541,1542,568,1546,224],{},"A copilot seat. ",[200,1532,1535],{"href":1533,"rel":1534},"https://openai.com/business/chatgpt-enterprise/",[204],"ChatGPT Enterprise",[200,1537,1540],{"href":1538,"rel":1539},"https://www.microsoft.com/en-us/microsoft-365/copilot",[204],"Microsoft 365 Copilot"," are excellent personal surfaces. They are not, by default, a company loop with fail-closed writes. See ",[200,1543,1545],{"href":1544},"how-to-choose-between-a-copilot-and-a-work-os","How to choose between a copilot and a work OS",[200,1547,1549],{"href":1548},"how-to-choose-between-a-coding-harness-and-an-enterprise-harness","How to choose between a coding harness and an enterprise harness",[266,1551,1553],{"id":1552},"how-this-shows-up-in-products","How this shows up in products",[190,1555,1556,1559,1560,1562,1563,1565],{},[193,1557,1558],{},"Coding harnesses."," Claude Code, Cursor, Codex, open shells like OpenHands. Workspace is a checkout. ",[351,1561,1262],{}," / ",[351,1564,1277],{}," are guides. Hooks, tests, and CI are sensors. Eval is SWE-bench or Terminal-Bench, or your own suite. These are the right shape for software.",[190,1567,1568,1571,1572,1574],{},[193,1569,1570],{},"Library harnesses."," LangChain ",[351,1573,1518],{},", Deep Agents, LangGraph graphs. You compose the loop in code. You own production identity. Good when the job is yours to engineer. A liability when operators are expected to “just add Salesforce.”",[190,1576,1577,1580,1581,1585],{},[193,1578,1579],{},"Enterprise / outer harnesses."," Palantir AIP, Salesforce Agentforce, and self-service OS-class products such as Nimbus. The workspace is a job with connectors and people, not a git root. The interesting stop is a named signer on a quoted write, not a green test. ",[200,1582,1584],{"href":1583},"how-to-evaluate-an-agent-harness","How to evaluate an agent harness"," is the buying sheet.",[190,1587,1588,1589,1592],{},"Nimbus’s mapping is deliberate and not unique as a ",[1370,1590,1591],{},"category",": Perception orients, Conflux collaborates, agent teams run, governance quotes, the graph records. You can score that mapping against the parts above. You should score AIP and Agentforce the same way. Category names do not substitute for a failed write.",[266,1594,1596],{"id":1595},"questions-people-actually-ask","Questions people actually ask",[1598,1599,1601],"h3",{"id":1600},"is-the-model-the-agent","Is the model the agent?",[190,1603,1604],{},"No. The agent is model plus harness. Shopping for a model is shopping for a chip. Shopping for a harness is shopping for how work finishes.",[1598,1606,1608],{"id":1607},"do-i-need-a-harness-for-a-single-prompt","Do I need a harness for a single prompt?",[190,1610,1611],{},"No. A completion does not need a loop. Multi-step tool use does. Long-running work that outlasts one window does. Writes to live systems do.",[1598,1613,1615],{"id":1614},"is-rag-a-harness","Is RAG a harness?",[190,1617,1618,1619,1623],{},"Retrieval is a tool and a memory pattern inside a step. ",[200,1620,1622],{"href":1621},"what-is-enterprise-rag","Enterprise RAG"," does not dispatch tools, enforce a signer, or persist a decision. Useful. Incomplete.",[1598,1625,1627],{"id":1626},"can-i-just-use-mcp-as-my-harness","Can I just use MCP as my harness?",[190,1629,1630],{},"You can use MCP as the plug. You still need identity, scope, quoting, and a stop. The spec does not require those.",[1598,1632,1634],{"id":1633},"will-a-better-model-shrink-the-harness","Will a better model shrink the harness?",[190,1636,1637,1641],{},[200,1638,1640],{"href":1378,"rel":1639},[204],"Osmani"," and Anthropic’s long-running work both say the ceiling moves. Tasks that were unreachable come into play and bring new failure modes. Stronger models still do not know your signer, your budget, or your CRM field map.",[1598,1643,1645],{"id":1644},"how-is-this-different-from-an-enterprise-ai-os","How is this different from an enterprise AI OS?",[190,1647,1144,1648,1652],{},[200,1649,1651],{"href":1650},"what-is-an-enterprise-ai-operating-system","enterprise AI operating system"," is the company-shaped product: wiki, workstreams, teams, gates, ledger. A harness is the runtime idea underneath — including coding harnesses that are not an OS. Nimbus is an OS-class outer harness. Claude Code is not an OS. Both are harnesses.",[1598,1654,1656],{"id":1655},"what-should-i-read-next","What should I read next?",[190,1658,1659,1661,1662,1666,1667,1669],{},[200,1660,994],{"href":254}," for the practice. ",[200,1663,1665],{"href":1664},"agent-harness-architecture","Agent harness architecture"," for the parts in one diagram. ",[200,1668,1584],{"href":1583}," before a vendor demo.",[266,1671,972],{"id":971},[190,1673,1674,310,1677,314,1680,224],{},[200,1675,1676],{"href":243},"What is an agentic workflow",[200,1678,1679],{"href":1462},"What is multi-agent AI",[200,1681,1682],{"href":461},"What is write-back governance",[266,1684,1003],{"id":1002},[211,1686,1687,1693,1699,1705,1711,1717,1722,1728,1734,1740,1745,1751,1756,1762,1768,1774,1780],{},[214,1688,1689],{},[200,1690,1692],{"href":323,"rel":1691},[204],"LangChain, Agents (Agent = Model + Harness)",[214,1694,1695],{},[200,1696,1698],{"href":1177,"rel":1697},[204],"LangChain, The anatomy of an agent harness",[214,1700,1701],{},[200,1702,1704],{"href":1513,"rel":1703},[204],"LangChain, How to build a custom agent harness",[214,1706,1707],{},[200,1708,1710],{"href":1163,"rel":1709},[204],"Wikipedia, Agent harness",[214,1712,1713],{},[200,1714,1716],{"href":1171,"rel":1715},[204],"Databricks, What is an AI agent harness?",[214,1718,1719],{},[200,1720,1046],{"href":733,"rel":1721},[204],[214,1723,1724],{},[200,1725,1727],{"href":1397,"rel":1726},[204],"Anthropic, Effective harnesses for long-running agents",[214,1729,1730],{},[200,1731,1733],{"href":1271,"rel":1732},[204],"Böckeler, Harness engineering for coding agent users",[214,1735,1736],{},[200,1737,1739],{"href":1378,"rel":1738},[204],"Addy Osmani, Agent harness engineering",[214,1741,1742],{},[200,1743,1011],{"href":202,"rel":1744},[204],[214,1746,1747],{},[200,1748,1750],{"href":544,"rel":1749},[204],"NIST AI Risk Management Framework",[214,1752,1753],{},[200,1754,554],{"href":552,"rel":1755},[204],[214,1757,1758],{},[200,1759,1761],{"href":1349,"rel":1760},[204],"CBC, Air Canada chatbot lawsuit",[214,1763,1764],{},[200,1765,1767],{"href":1355,"rel":1766},[204],"Reuters, New York lawyers sanctioned over ChatGPT citations",[214,1769,1770],{},[200,1771,1773],{"href":1413,"rel":1772},[204],"OWASP Top 10 for LLM applications",[214,1775,1776],{},[200,1777,1779],{"href":1236,"rel":1778},[204],"Model Context Protocol specification (2025-11-25)",[214,1781,1782],{},[200,1783,1785],{"href":1252,"rel":1784},[204],"Claude Code, Hooks",{"title":171,"searchDepth":172,"depth":172,"links":1787},[1788,1789,1790,1791,1792,1793,1802,1803],{"id":410,"depth":172,"text":411},{"id":474,"depth":172,"text":475},{"id":1384,"depth":172,"text":1385},{"id":1484,"depth":172,"text":1485},{"id":1552,"depth":172,"text":1553},{"id":1595,"depth":172,"text":1596,"children":1794},[1795,1796,1797,1798,1799,1800,1801],{"id":1600,"depth":368,"text":1601},{"id":1607,"depth":368,"text":1608},{"id":1614,"depth":368,"text":1615},{"id":1626,"depth":368,"text":1627},{"id":1633,"depth":368,"text":1634},{"id":1644,"depth":368,"text":1645},{"id":1655,"depth":368,"text":1656},{"id":971,"depth":172,"text":972},{"id":1002,"depth":172,"text":1003},"2026-08-24","An agent harness is everything around a model that lets it do work: tools, memory, permissions, loops, and stops — Agent = Model + Harness, not a chat window with plugins.","/blog/what-is-an-agent-harness",{"title":1136,"description":1805},"blog/what-is-an-agent-harness",[1104,1810,1811,1812],"agent-harness","agents","harness-engineering","3CDvdR09AOUKC2e_n9BjOHZfpkkyjMqsAzkONc8Lf0E",{"id":1815,"title":979,"archived":165,"authors":1816,"badge":1818,"body":1819,"date":1086,"definedTerm":2675,"department":166,"description":2676,"extension":174,"eyebrow":166,"faqHeader":2677,"faqs":2679,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":2692,"relatedHeading":166,"seo":2693,"series":1108,"sitemap":131,"status":166,"stem":2694,"subhead":166,"tags":2695,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":2696},"content/blog/what-is-a-nimbus-loop.md",[1817],{"name":184,"to":136},{"label":186},{"type":168,"value":1820,"toc":2659},[1821,1828,1834,1837,1862,1870,1874,1877,1885,1891,1897,1907,1917,1962,1971,1981,1983,2032,2035,2039,2045,2054,2057,2068,2076,2082,2086,2093,2096,2116,2122,2125,2129,2137,2140,2166,2169,2179,2186,2188,2194,2204,2214,2220,2237,2240,2244,2247,2252,2269,2274,2291,2304,2310,2316,2320,2326,2335,2341,2350,2358,2364,2368,2400,2409,2416,2418,2424,2430,2436,2442,2450,2460,2469,2472,2474,2477,2525,2532,2535,2537,2546,2558,2571,2573,2598,2600,2657],[190,1822,1823,1824,1827],{},"A ",[193,1825,1826],{},"standing order"," for enterprise AI is a job that already exists before anyone starts a run: a trigger admits work, a compiled recipe executes, and a run record shows outputs and skips. Nobody re-describes the job in a chat thread to make Monday happen.",[190,1829,1830,1833],{},[200,1831,205],{"href":202,"rel":1832},[204]," shows organisations using models widely while leaving recurring work in chat and memory. Adoption without redesign means the same exception list is still a ritual: someone remembers the filters, someone else remembers the sheet, and audit asks a person rather than opening a record.",[190,1835,1836],{},"Disambiguate before you build or buy:",[211,1838,1839,1846,1855],{},[214,1840,1841,1843,1844,224],{},[193,1842,218],{}," — a sensor that grades a run. Did the executed write match the signed payload? See ",[200,1845,223],{"href":222},[214,1847,1848,1850,1851,1854],{},[193,1849,229],{}," — this page. A job that ",[193,1852,1853],{},"admits"," a run when a trigger fires.",[214,1856,1857,1859,1860,224],{},[193,1858,239],{}," — an interactive path that still reasons when the route is not fully known. See ",[200,1861,244],{"href":243},[190,1863,1864,1866,1867,1869],{},[200,1865,195],{"href":268}," is the discipline behind the recipe: compile the known path, detect change, record skips. A standing-order loop is how that discipline shows up as an object operators can own — on a ",[200,1868,445],{"href":444},", with connectors, a roster, and a finish line.",[266,1871,1873],{"id":1872},"what-a-standing-order-loop-is","What a standing-order loop is",[190,1875,1876],{},"Four parts, always visible:",[190,1878,1879,1882,1883,224],{},[193,1880,1881],{},"1. Trigger."," What starts a run. A schedule (every Monday 06:00), a file landing in a folder, a threshold crossed, or a deliberate manual start from a form. See ",[200,1884,429],{"href":428},[190,1886,1887,1890],{},[193,1888,1889],{},"2. Compiled recipe."," The fixed sequence for this job on this workstream: which connectors to read, which rules to apply, what to produce, whom to notify. Not a system prompt. Not “use your judgement.” The same recipe every time until you version it.",[190,1892,1893,1896],{},[193,1894,1895],{},"3. Run page."," One URL per execution. Inputs observed, steps taken, outputs attached, skips listed with reasons, actions proposed or completed. This is what audit walks — not a transcript of vibes.",[190,1898,1899,1902,1903,1906],{},[193,1900,1901],{},"4. Team notified."," The roster on the workstream gets the outcome. Success, partial success with skips, or hard stop. ",[200,1904,1905],{"href":529},"Collaborative AI"," means the right people see the same run page, not a forwarded screenshot.",[190,1908,1909,1910,1913,1914,1916],{},"A standing-order loop is ",[193,1911,1912],{},"not"," an agent you chat with. On the normal path it does not invoke a model. See ",[200,1915,343],{"href":342},". When the path is unknown, the loop escalates — to a person on the roster, or optionally to an agentic workflow you have explicitly attached for that exception class.",[345,1918,1920],{"className":347,"code":1919,"language":349,"meta":171,"style":171},"flowchart LR\n  triggerFires[\"Trigger fires\"] --> admitRun[\"Standing order admits run\"]\n  admitRun --> compiledRecipe[\"Compiled recipe\"]\n  compiledRecipe --> outputsSkips[\"Outputs and skips\"]\n  compiledRecipe --> signedActions[\"Actions if signed\"]\n  compiledRecipe --> escalateUnknown[\"Escalate if unknown\"]\n  outputsSkips --> teamNotified[\"Team notified\"]\n  signedActions --> teamNotified\n",[351,1921,1922,1926,1931,1936,1941,1946,1951,1956],{"__ignoreMap":171},[354,1923,1924],{"class":356,"line":357},[354,1925,360],{},[354,1927,1928],{"class":356,"line":172},[354,1929,1930],{},"  triggerFires[\"Trigger fires\"] --> admitRun[\"Standing order admits run\"]\n",[354,1932,1933],{"class":356,"line":368},[354,1934,1935],{},"  admitRun --> compiledRecipe[\"Compiled recipe\"]\n",[354,1937,1938],{"class":356,"line":374},[354,1939,1940],{},"  compiledRecipe --> outputsSkips[\"Outputs and skips\"]\n",[354,1942,1943],{"class":356,"line":380},[354,1944,1945],{},"  compiledRecipe --> signedActions[\"Actions if signed\"]\n",[354,1947,1948],{"class":356,"line":386},[354,1949,1950],{},"  compiledRecipe --> escalateUnknown[\"Escalate if unknown\"]\n",[354,1952,1953],{"class":356,"line":392},[354,1954,1955],{},"  outputsSkips --> teamNotified[\"Team notified\"]\n",[354,1957,1959],{"class":356,"line":1958},8,[354,1960,1961],{},"  signedActions --> teamNotified\n",[190,1963,1964,1967,1968,1970],{},[200,1965,325],{"href":323,"rel":1966},[204]," defines Agent = Model + Harness. A standing order is intentionally ",[193,1969,1912],{}," that object on the happy path. It is closer to a scheduled pipeline with operator UX: a form to configure, a run page to inspect, a roster to notify.",[190,1972,1973,1974,1976,1977,1980],{},"Compare ",[200,1975,601],{"href":600},": workflow is the abstract sequence; a standing-order loop is the ",[193,1978,1979],{},"deployed"," sequence on a named job with connectors and roster; an agent is the reasoning actor for unknown branches.",[266,1982,411],{"id":410},[211,1984,1985,1990,1995,2001,2006,2012,2020,2026],{},[214,1986,1987,1989],{},[193,1988,440],{}," The job waits. It does not need to be re-briefed.",[214,1991,1992,1994],{},[193,1993,424],{}," Schedule, arrival, threshold, or manual start. Deduplicate so unchanged inputs do not page finance.",[214,1996,1997,2000],{},[193,1998,1999],{},"Recipe version."," The compiled steps as of this run. If only a prompt versions, you do not have a recipe.",[214,2002,2003,2005],{},[193,2004,434],{}," Recorded halt. Missing file, ambiguous row, stale schema.",[214,2007,2008,2011],{},[193,2009,2010],{},"Output."," Artefact on the run page. Read-only connectors suffice.",[214,2013,2014,2017,2018,224],{},[193,2015,2016],{},"Action."," Write to a live system. Requires ",[200,2019,462],{"href":461},[214,2021,2022,2025],{},[193,2023,2024],{},"Roster roles."," Owner, signer, subscriber, exception worker — not “whoever is online.”",[214,2027,2028,2031],{},[193,2029,2030],{},"Quiet success."," Ran, nothing to write, record still exists. Month-end with zero exceptions is success, not a missing email.",[190,2033,2034],{},"If a vendor cannot show these nouns as objects — not as slides — you are looking at a copilot with a cron job.",[266,2036,2038],{"id":2037},"outputs-vs-actions","Outputs vs actions",[190,2040,2041,2044],{},[193,2042,2043],{},"Outputs"," are artefacts: CSV, table, PDF draft, exception list, email body for review. They land on the run page and in notifications. Read-only connectors suffice.",[190,2046,2047,2050,2051,2053],{},[193,2048,2049],{},"Actions"," are writes to live systems: CRM stage change, ticket update, approved journal. They follow the same rules as any other write — quoted payload, named signer, ",[200,2052,462],{"href":461},". A loop does not silently become a write tool because the schedule fired.",[190,2055,2056],{},"Good defaults:",[211,2058,2059,2062,2065],{},[214,2060,2061],{},"Month one: outputs only. Prove the recipe matches manual work.",[214,2063,2064],{},"Month two: one action class with a named signer and a stored rejection test.",[214,2066,2067],{},"Never: bulk writes before anyone has rejected a payload on this workstream.",[190,2069,2070,2072,2073,2075],{},[200,2071,255],{"href":254}," covers sensors around model steps. Standing-order loops inherit platform gates for actions without turning the whole job into an agent harness. ",[200,2074,984],{"href":263}," is the split.",[190,2077,2078,2081],{},[200,2079,735],{"href":733,"rel":2080},[204]," advises simple pipelines where a fixed sequence will do. Outputs-first is that advice in operations clothing: prove the list before you post the journal.",[266,2083,2085],{"id":2084},"wizard-not-chat-ritual","Wizard, not chat ritual",[190,2087,2088,2089,2092],{},"Operators configure a standing order from a ",[193,2090,2091],{},"form",": name the job, pick the trigger, attach sources, define outputs, choose who gets notified. Starting a run is an explicit start or waiting for the schedule — not typing “please do the usual” into Slack.",[190,2094,2095],{},"Why this matters:",[211,2097,2098,2104,2110],{},[214,2099,2100,2103],{},[193,2101,2102],{},"Chat rituals depend on memory."," The usual drifts. New hires cannot start the job.",[214,2105,2106,2109],{},[193,2107,2108],{},"Forms compile intent."," Fields become recipe parameters. Parameters version.",[214,2111,2112,2115],{},[193,2113,2114],{},"Audit needs objects."," A standing order with version 4 is evidence. A thread is not.",[190,2117,2118,2121],{},[200,2119,205],{"href":202,"rel":2120},[204]," reports broad use and narrow redesign. Replacing a chat ritual with a form on a scoped workstream is redesign you can measure: time to first output, skip rate, diff versus manual baseline.",[190,2123,2124],{},"Discovery still happens in conversation. The first time you figure out the filters, chat is fine. The tenth time, chat is a tax. Compile after the second successful manual run, not after the twentieth apology.",[266,2126,2128],{"id":2127},"where-a-standing-order-loop-lives","Where a standing-order loop lives",[190,2130,2131,2132,2134,2135,224],{},"On a ",[193,2133,445],{}," — the shared workspace for one outcome: brief, connectors, people, budget, finish line. See ",[200,2136,656],{"href":444},[190,2138,2139],{},"The loop inherits:",[211,2141,2142,2148,2154,2160],{},[214,2143,2144,2147],{},[193,2145,2146],{},"Least-privilege connectors"," scoped to this job",[214,2149,2150,2153],{},[193,2151,2152],{},"Roster"," who may view, sign, or receive skips",[214,2155,2156,2159],{},[193,2157,2158],{},"Budget"," if a later step adds a model for exceptions",[214,2161,2162,2165],{},[193,2163,2164],{},"Wiki sections"," the recipe may load as feed-forward context",[190,2167,2168],{},"Standing orders stack on the same workstream. “Weekly exceptions” and “month-end accrual list” can coexist with separate triggers and recipes. They share connectors and governance without sharing a Slack channel.",[190,2170,2171,2174,2175,2178],{},[200,2172,2173],{"href":659},"Four pillars of an enterprise AI platform"," — workstream, governance, graph, teams — describe the platform a loop plugs into. The loop is not a fourth pillar; it is how unattended work runs ",[193,2176,2177],{},"inside"," the workstream.",[190,2180,2181,2185],{},[200,2182,2184],{"href":400,"rel":2183},[204],"Thoughtworks on the enterprise AI operating system"," stresses organisational ownership. A standing order without an owner on the workstream is automation theatre: the recipe will rot, skip rates will climb, and people will return to the thread they trust.",[266,2187,475],{"id":474},[190,2189,2190,2193],{},[193,2191,2192],{},"Reliability."," The job runs when the trigger fires, even if the usual operator is on leave.",[190,2195,2196,2199,2200,2203],{},[193,2197,2198],{},"Evidence."," Auditors and partners open the run page. ",[200,2201,1029],{"href":544,"rel":2202},[204]," Measure functions assume you can observe what ran. Skips are observations, not embarrassments.",[190,2205,2206,2209,2210,2213],{},[193,2207,2208],{},"Cost."," No tokens on the happy path. ",[200,2211,538],{"href":536,"rel":2212},[204]," tracks rising capability and cost. Compiled loops avoid paying for reinterpretation every Monday.",[190,2215,2216,2219],{},[193,2217,2218],{},"Safety."," Unknown paths escalate. A standing order that guesses is an unharnessed agent wearing a schedule.",[190,2221,2222,672,2225,2228,2229,2232,2233,2236],{},[193,2223,2224],{},"Regulatory fit.",[200,2226,554],{"href":552,"rel":2227},[204]," wants named actors and operational controls. A loop on a roster satisfies the instinct better than a shared login. ",[200,2230,840],{"href":838,"rel":2231},[204]," purpose limitation maps to workstream scope. The ",[200,2234,835],{"href":833,"rel":2235},[204]," documentation expectations map to run pages and versioned recipes.",[190,2238,2239],{},"It affects you if the same artefact is due every week, if two people already follow a checklist, and if last quarter’s audit asked “what ran on the 12th” and the answer was a search through chat.",[266,2241,2243],{"id":2242},"a-worked-example-month-end-accrual-list","A worked example: month-end accrual list",[190,2245,2246],{},"Finance runs the same accrual exception pass every close: read ERP open items, read the controller’s mapping tab, flag mismatches, send the controller a list — no posting.",[190,2248,2249],{},[193,2250,2251],{},"Configure once.",[211,2253,2254,2257,2260,2263,2266],{},[214,2255,2256],{},"Workstream: “Month-end accrual exceptions — Entity UK”",[214,2258,2259],{},"Trigger: manual start during the close window, plus optional schedule on close day 3",[214,2261,2262],{},"Recipe: read ERP (read-only), read mapping sheet, apply rules from wiki section “UK accrual mapping v3”",[214,2264,2265],{},"Output: exception table on the run page, plus notification to the controller roster role",[214,2267,2268],{},"Skips: missing mapping row → queue to FP&A; ERP timeout → hard stop with reason",[190,2270,2271],{},[193,2272,2273],{},"Each close (unattended).",[211,2275,2276,2279,2282,2288],{},[214,2277,2278],{},"Controller starts the run or the schedule fires",[214,2280,2281],{},"Run page shows 142 rows scanned, 7 exceptions, 2 skips (ambiguous business unit on rows 88 and 91)",[214,2283,2284,2285,2287],{},"Controller works skips in ",[200,2286,530],{"href":529}," on the same workstream — not in a side message",[214,2289,2290],{},"No model on the happy path; no journal posts without a signed action later",[190,2292,2293,2294,2296,2297,2300,2301,2303],{},"If row 88 needs judgement beyond rules, assign to a human. Optionally attach an ",[200,2295,333],{"href":243}," for ",[193,2298,2299],{},"that queue only"," after the compiled path proves stable. ",[200,2302,676],{"href":675},"; the standing order remains.",[190,2305,2306,2309],{},[200,2307,826],{"href":824,"rel":2308},[204]," does not mention loops. It asks whether an independent person can reconstruct how a number became the number. A run page with inputs, rules version, and skips is reconstruction-friendly.",[190,2311,2312,2313,2315],{},"Walk a second close. Recipe version is still v3. The mapping tab gained a new entity code. The loop skips those rows instead of inventing a mapping. FP&A updates the wiki, the owner versions the recipe to v4, and close day 3 runs clean. That update is ",[200,2314,1087],{"href":268}," — not a prompt tweak in a private workspace.",[266,2317,2319],{"id":2318},"standing-orders-vs-things-you-already-have","Standing orders vs things you already have",[190,2321,2322,2325],{},[193,2323,2324],{},"Cron plus script."," Fine for engineers. Standing orders add roster, notifications, skip UX, and workstream scope for operators who will never open a repository.",[190,2327,2328,2331,2332,2334],{},[193,2329,2330],{},"RPA."," Screen replay breaks when the interface changes. See ",[200,2333,591],{"href":590},". Prefer API reads and explicit skips.",[190,2336,2337,2340],{},[193,2338,2339],{},"Personal automation wiring."," Good for individual productivity. Weak on named signers, skip queues, and audit export for regulated teams.",[190,2342,2343,2346,2347,2349],{},[193,2344,2345],{},"Agent in a channel."," Re-describes the job every time. See ",[200,2348,343],{"href":342},". Cost and drift scale with repetition.",[190,2351,2352,2355,2356,224],{},[193,2353,2354],{},"Eval harness only."," Grades agent runs. Does not replace a standing order that starts them. See ",[200,2357,223],{"href":222},[190,2359,2360,2363],{},[193,2361,2362],{},"Shared spreadsheet plus calendar invite."," Common, and honest. It is also how the invite survives and the rules do not. Compile the rules; keep the calendar as a trigger if you must.",[266,2365,2367],{"id":2366},"human-roles-on-the-loop","Human roles on the loop",[211,2369,2370,2376,2384,2390],{},[214,2371,2372,2375],{},[193,2373,2374],{},"Owner."," Maintains recipe and wiki references. Reviews skip trends monthly.",[214,2377,2378,2381,2382,224],{},[193,2379,2380],{},"Signer."," Approves action classes. Same as ",[200,2383,641],{"href":640},[214,2385,2386,2389],{},[193,2387,2388],{},"Subscriber."," Gets notified. May not sign.",[214,2391,2392,2395,2396,2399],{},[193,2393,2394],{},"Exception worker."," Works the skip queue. May use ",[200,2397,2398],{"href":846},"human-in-the-loop"," for judgement calls.",[190,2401,2402,2404,2405,2408],{},[200,2403,611],{"href":610}," is several people in the room at once. A standing order is several people ",[193,2406,2407],{},"aligned on the same run page"," asynchronously — often more realistic for finance and operations.",[190,2410,2411,2412,2415],{},"Research on hybrid human–AI teams (",[200,2413,744],{"href":742,"rel":2414},[204],") shows clear role separation improves outcomes. Loops encode machine steps versus human steps explicitly. If everyone is “a user,” you have not assigned override.",[266,2417,752],{"id":751},[190,2419,2420,2423],{},[193,2421,2422],{},"Scheduled prompt."," “Run this chat task every hour.” That is a scheduled agent call. No compiled recipe version. No skip semantics. No diff against last week’s baseline.",[190,2425,2426,2429],{},[193,2427,2428],{},"Silent defaults."," Missing values filled, categories invented, emails sent without a skip. Overnight work that “helped” is how wrong rows become official.",[190,2431,2432,2435],{},[193,2433,2434],{},"Outputs and actions collapsed."," The schedule posts because posting was easier to demo than a table. Prove the artefact first.",[190,2437,2438,2441],{},[193,2439,2440],{},"Ownerless workstream."," Connectors exist; nobody reviews skips. The recipe ages in place.",[190,2443,2444,2447,2448,224],{},[193,2445,2446],{},"Eval as the loop."," A grading harness without a standing order still starts from Slack. See ",[200,2449,223],{"href":222},[190,2451,2452,2455,2456,2459],{},[193,2453,2454],{},"God workspace."," One workspace for every job destroys purpose limitation. Scope the workstream to the finish line. ",[200,2457,840],{"href":838,"rel":2458},[204]," cares about purpose; so should you.",[190,2461,2462,2465,2466,2468],{},[193,2463,2464],{},"Exception class as hidden agent."," “If skip, ask the model” injected into the compiled path without a harness. Attach an ",[200,2467,333],{"href":243}," explicitly, or keep the human queue.",[190,2470,2471],{},"Failure looks like a forwarded screenshot and a disagreement about which filters ran. Success looks like a run page two people can open without asking who started it.",[266,2473,859],{"id":858},[190,2475,2476],{},"One standing order. One workstream. Outputs only for four weeks.",[868,2478,2479,2485,2493,2499,2505,2511,2517],{},[214,2480,2481,2484],{},[193,2482,2483],{},"Pick a job"," with a written checklist already used by two people.",[214,2486,2487,2490,2491,224],{},[193,2488,2489],{},"Open a workstream"," with read-only connectors and the real roster. See ",[200,2492,656],{"href":444},[214,2494,2495,2498],{},[193,2496,2497],{},"Configure the standing order"," from a form: trigger, sources, output format, notify list.",[214,2500,2501,2504],{},[193,2502,2503],{},"Run twice manually"," alongside the legacy process. Diff outputs.",[214,2506,2507,2510],{},[193,2508,2509],{},"Add skip rules"," for every difference that required a side message last month.",[214,2512,2513,2516],{},[193,2514,2515],{},"Enable the schedule"," only after skip rate is stable.",[214,2518,2519,2521,2522,2524],{},[193,2520,94],{}," with ",[200,2523,581],{"href":580}," before adding actions.",[190,2526,2527,2531],{},[200,2528,2530],{"href":2529},"how-to-evaluate-collaborative-ai","How to evaluate collaborative AI"," applies when the loop’s output becomes a shared artefact people sign — forecast pack, pipeline commit, accrual list.",[190,2533,2534],{},"If step 4 fails, you have not compiled the path yet. Write the steps again. Do not add a model to paper over a fuzzy recipe.",[266,2536,929],{"id":928},[190,2538,2539,2540,2542,2543,2545],{},"Nimbus names this object a ",[193,2541,935],{},". A Loop is a standing order on a ",[200,2544,445],{"href":444},": trigger, compiled recipe, run page, roster notified. Operators configure it from a wizard — not by re-briefing a chat thread — and each execution is inspectable.",[190,2547,2548,2549,2551,2552,2554,2555,2557],{},"The Loop inherits that workstream’s connectors, wiki context, budget, and ",[200,2550,1298],{"href":461}," gates. Model steps are not implied. If you later attach an ",[200,2553,333],{"href":243}," to an exception class, ",[200,2556,952],{"href":254}," applies to that branch only.",[190,2559,955,2560,310,2563,314,2565,963,2567,568,2569,224],{},[200,2561,2562],{"href":268},"what is loop engineering",[200,2564,429],{"href":428},[200,2566,343],{"href":342},[200,2568,966],{"href":32},[200,2570,942],{"href":40},[266,2572,972],{"id":971},[211,2574,2575,2580,2585,2590,2594],{},[214,2576,2577],{},[200,2578,2579],{"href":268},"What is loop engineering",[214,2581,2582],{},[200,2583,2584],{"href":428},"Six things that start a loop",[214,2586,2587],{},[200,2588,2589],{"href":600},"Loop vs workflow vs agent",[214,2591,2592],{},[200,2593,994],{"href":254},[214,2595,2596],{},[200,2597,1682],{"href":461},[266,2599,1003],{"id":1002},[211,2601,2602,2607,2612,2617,2622,2627,2632,2637,2642,2647,2652],{},[214,2603,2604],{},[200,2605,1011],{"href":202,"rel":2606},[204],[214,2608,2609],{},[200,2610,1017],{"href":323,"rel":2611},[204],[214,2613,2614],{},[200,2615,1023],{"href":400,"rel":2616},[204],[214,2618,2619],{},[200,2620,1029],{"href":544,"rel":2621},[204],[214,2623,2624],{},[200,2625,554],{"href":552,"rel":2626},[204],[214,2628,2629],{},[200,2630,1040],{"href":536,"rel":2631},[204],[214,2633,2634],{},[200,2635,1046],{"href":733,"rel":2636},[204],[214,2638,2639],{},[200,2640,744],{"href":742,"rel":2641},[204],[214,2643,2644],{},[200,2645,1057],{"href":824,"rel":2646},[204],[214,2648,2649],{},[200,2650,835],{"href":833,"rel":2651},[204],[214,2653,2654],{},[200,2655,840],{"href":838,"rel":2656},[204],[1069,2658,1071],{},{"title":171,"searchDepth":172,"depth":172,"links":2660},[2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674],{"id":1872,"depth":172,"text":1873},{"id":410,"depth":172,"text":411},{"id":2037,"depth":172,"text":2038},{"id":2084,"depth":172,"text":2085},{"id":2127,"depth":172,"text":2128},{"id":474,"depth":172,"text":475},{"id":2242,"depth":172,"text":2243},{"id":2318,"depth":172,"text":2319},{"id":2366,"depth":172,"text":2367},{"id":751,"depth":172,"text":752},{"id":858,"depth":172,"text":859},{"id":928,"depth":172,"text":929},{"id":971,"depth":172,"text":972},{"id":1002,"depth":172,"text":1003},"Nimbus Loop","A Nimbus Loop is a standing order on a workstream — trigger, compiled recipe, and run page — that produces outputs or signed actions and notifies the team without a chat ritual.",{"eyebrow":1090,"title":2678},"Standing orders, not chat",[2680,2683,2686,2689],{"question":2681,"answer":2682},"Is a Nimbus Loop the same as an eval loop?","No. An eval loop grades a run after it happens — tests, schemas, read-backs, signer checks. A standing-order loop is the job that admits the run when a trigger fires and then executes a compiled recipe. You need the sensor when you write to a live system or when a model step must be independently verified. You need the standing order when the same job should exist before anyone types. Refuse to treat a passing score as proof that Monday's job started, or a schedule as proof that the output was correct. See eval loops for enterprise agent harnesses.",{"question":2684,"answer":2685},"Do I start a Nimbus Loop from chat?","No. You start from a form with known fields — schedule, sources, outputs, roster — on a workstream. Chat is the right surface for novel work; a standing order is for work you have already compiled. If the only way to start the job is to re-describe it in natural language, you do not have a loop yet. Use chat to discover the path once. Then write the path as steps, attach a trigger, and stop asking the model to remember. Refuse a product that treats an open thread as the compiler for recurring operations.",{"question":2687,"answer":2688},"Can a Nimbus Loop write to live systems?","It can, when the recipe includes an action class and a named signer on the workstream. The default posture is outputs first: a table, a list, a draft that humans can diff against last month. Writes follow the same governance as any other proposed change — quoted payload, named identity, fail-closed if nobody signed. Use actions only after the compiled path matches the manual baseline. Refuse bulk writes in week one, and refuse a schedule that becomes a write tool merely because the clock fired. See what is write-back governance.",{"question":2690,"answer":2691},"What happens when the path is unknown?","The standing order skips with a reason and notifies the roster. A person decides next — or, later, an explicit agentic workflow on that exception class only. Guessing is how operational debt compounds overnight: ambiguous input, silent default, wrong row updated, inbox quiet until finance opens the file. Use skips as first-class outcomes, not embarrassments. Review skip rates on a cadence; a rising count means the recipe or the world changed. Refuse silent best-effort fills inside the compiled path. See a loop is not an agent.","/blog/what-is-a-nimbus-loop",{"title":979,"description":2676},"blog/what-is-a-nimbus-loop",[1108,1104,966,1110,1109],"V4e7fgv5U4MIlLDkIuX8TsC-hKbkI-PPfCfOXE4L91o",{"enabled":165,"message":2698,"linkLabel":79,"linkHref":80,"id":2699,"title":2700,"archived":165,"authors":166,"badge":166,"body":2701,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":2705,"relatedHeading":166,"seo":2706,"series":166,"sitemap":165,"status":166,"stem":2707,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":2708},"We're hiring! Join the team building the Sentient Enterprise.","content/shared/hiring.md","Hiring banner",{"type":168,"value":2702,"toc":2703},[],{"title":171,"searchDepth":172,"depth":172,"links":2704},[],"/shared/hiring",{"title":2700,"description":171},"shared/hiring","1zs3boivKda1e-b-hAyuNcmZSKjZUAXmecnwHVgcHzk",{"fold":2710,"id":2714,"title":2715,"archived":165,"authors":166,"badge":166,"body":2716,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":2720,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":2724,"relatedHeading":166,"seo":2725,"series":166,"sitemap":165,"status":166,"stem":2726,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":2727},{"headline":2711,"description":2712,"primaryLabel":8,"primaryTo":2713,"secondaryLabel":1128,"secondaryTo":12},"Run frontier AI your business actually owns.","Governed agent swarms, 2,000+ integrations, and a knowledge graph that stays inside your walls. Start on Free.","/signup?plan=free","content/shared/cta.md","Site CTAs",{"type":168,"value":2717,"toc":2718},[],{"title":171,"searchDepth":172,"depth":172,"links":2719},[],{"headline":2721,"description":2722,"primaryLabel":8,"primaryTo":2713,"secondaryLabel":2723,"secondaryTo":85},"See what governed AI looks like on your stack.","Connect your tools, run a workstream, and keep every decision on your ledger. Start on Free.","Talk to our team","/shared/cta",{"title":2715,"description":171},"shared/cta","PS2VPJsszmUpMBZT6nEp8cWXCdeiN6zDRl-p8d0uY2k",1789797891669]