[{"data":1,"prerenderedAt":3233},["ShallowReactive",2],{"navigation_docs":3,"docs-page:\u002Fgovern\u002Fkill-switches":1849,"docs-surround:\u002Fgovern\u002Fkill-switches":3228},[4,72,214,304,947,1040,1230,1504,1590,1701,1830],{"title":5,"path":6,"stem":7,"children":8,"icon":71},"Get started","\u002Fgetting-started","01.getting-started\u002F00.index",[9,10,15,20,25,36],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","01.getting-started\u002F01.introduction","i-ph-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F02.quickstart","i-ph-rocket-launch",{"title":21,"path":22,"stem":23,"icon":24},"Concepts","\u002Fgetting-started\u002Fconcepts","01.getting-started\u002F03.concepts","i-ph-book-open",{"title":26,"path":27,"stem":28,"children":29,"icon":31},"Install","\u002Fgetting-started\u002Finstall","01.getting-started\u002F04.install\u002F00.index",[30,32],{"title":26,"path":27,"stem":28,"icon":31},"i-ph-download-simple",{"title":33,"path":34,"stem":35},"Prepare the Linux sandbox","\u002Fgetting-started\u002Finstall\u002Flinux-sandbox","01.getting-started\u002F04.install\u002F01.linux-sandbox",{"title":37,"path":38,"stem":39,"children":40,"icon":42},"Web UI","\u002Fgetting-started\u002Fweb-ui","01.getting-started\u002F05.web-ui\u002F00.index",[41,43,47,51,55,59,63,67],{"title":37,"path":38,"stem":39,"icon":42},"i-ph-monitor",{"title":44,"path":45,"stem":46},"Choose a tenant","\u002Fgetting-started\u002Fweb-ui\u002Ftenants","01.getting-started\u002F05.web-ui\u002F01.tenants",{"title":48,"path":49,"stem":50},"Find a page","\u002Fgetting-started\u002Fweb-ui\u002Fnavigation","01.getting-started\u002F05.web-ui\u002F02.navigation",{"title":52,"path":53,"stem":54},"Use the chat drawer","\u002Fgetting-started\u002Fweb-ui\u002Fchats","01.getting-started\u002F05.web-ui\u002F03.chats",{"title":56,"path":57,"stem":58},"Create and edit records","\u002Fgetting-started\u002Fweb-ui\u002Fforms","01.getting-started\u002F05.web-ui\u002F04.forms",{"title":60,"path":61,"stem":62},"Keyboard and accessibility","\u002Fgetting-started\u002Fweb-ui\u002Faccessibility","01.getting-started\u002F05.web-ui\u002F05.accessibility",{"title":64,"path":65,"stem":66},"Accounts and permissions","\u002Fgetting-started\u002Fweb-ui\u002Faccounts","01.getting-started\u002F05.web-ui\u002F06.accounts",{"title":68,"path":69,"stem":70},"Console page directory","\u002Fgetting-started\u002Fweb-ui\u002Fpage-directory","01.getting-started\u002F05.web-ui\u002F07.page-directory",false,{"title":21,"path":73,"stem":74,"children":75,"icon":71},"\u002Fconcepts","02.concepts\u002F00.index",[76,77,82,87,92,123,128,143,166,185,204,209],{"title":21,"path":73,"stem":74},{"title":78,"path":79,"stem":80,"icon":81},"Architecture","\u002Fconcepts\u002Farchitecture","02.concepts\u002F01.architecture","i-ph-planet",{"title":83,"path":84,"stem":85,"icon":86},"Jobs and durability","\u002Fconcepts\u002Fjobs","02.concepts\u002F02.jobs","i-ph-infinity",{"title":88,"path":89,"stem":90,"icon":91},"Routing","\u002Fconcepts\u002Frouting","02.concepts\u002F03.routing","i-ph-path",{"title":93,"path":94,"stem":95,"children":96,"icon":98},"Security model","\u002Fconcepts\u002Fsecurity","02.concepts\u002F04.security\u002F00.index",[97,99,103,107,111,115,119],{"title":93,"path":94,"stem":95,"icon":98},"i-ph-shield-check",{"title":100,"path":101,"stem":102},"Node identity and tenant secrets","\u002Fconcepts\u002Fsecurity\u002Fidentity-and-secrets","02.concepts\u002F04.security\u002F01.identity-and-secrets",{"title":104,"path":105,"stem":106},"Plugin processes and operator exemptions","\u002Fconcepts\u002Fsecurity\u002Fplugins","02.concepts\u002F04.security\u002F02.plugins",{"title":108,"path":109,"stem":110},"Sandbox tiers and routing","\u002Fconcepts\u002Fsecurity\u002Fsandbox-tiers","02.concepts\u002F04.security\u002F03.sandbox-tiers",{"title":112,"path":113,"stem":114},"Sandbox egress rules","\u002Fconcepts\u002Fsecurity\u002Fegress","02.concepts\u002F04.security\u002F04.egress",{"title":116,"path":117,"stem":118},"Protected files and sandbox limits","\u002Fconcepts\u002Fsecurity\u002Fprotected-files","02.concepts\u002F04.security\u002F05.protected-files",{"title":120,"path":121,"stem":122},"Security assurance","\u002Fconcepts\u002Fsecurity\u002Fassurance","02.concepts\u002F04.security\u002F06.assurance",{"title":124,"path":125,"stem":126,"icon":127},"Temporal","\u002Fconcepts\u002Ftemporal","02.concepts\u002F05.temporal","i-ph-clock",{"title":129,"path":130,"stem":131,"children":132,"icon":134},"Limits and scaling","\u002Fconcepts\u002Flimits-and-scaling","02.concepts\u002F06.limits-and-scaling\u002F00.index",[133,135,139],{"title":129,"path":130,"stem":131,"icon":134},"i-ph-gauge",{"title":136,"path":137,"stem":138},"Tenant and queue limits","\u002Fconcepts\u002Flimits-and-scaling\u002Flimits","02.concepts\u002F06.limits-and-scaling\u002F01.limits",{"title":140,"path":141,"stem":142},"Capacity measurements","\u002Fconcepts\u002Flimits-and-scaling\u002Fmeasurements","02.concepts\u002F06.limits-and-scaling\u002F02.measurements",{"title":144,"path":145,"stem":146,"children":147,"icon":149},"Threat model","\u002Fconcepts\u002Fthreat-model","02.concepts\u002F07.threat-model\u002F00.index",[148,150,154,158,162],{"title":144,"path":145,"stem":146,"icon":149},"i-ph-crosshair",{"title":151,"path":152,"stem":153},"Trust boundaries and compromise","\u002Fconcepts\u002Fthreat-model\u002Ftrust-boundaries","02.concepts\u002F07.threat-model\u002F01.trust-boundaries",{"title":155,"path":156,"stem":157},"Harness and tool boundaries","\u002Fconcepts\u002Fthreat-model\u002Fharness-tools","02.concepts\u002F07.threat-model\u002F02.harness-tools",{"title":159,"path":160,"stem":161},"Known security gaps","\u002Fconcepts\u002Fthreat-model\u002Fknown-gaps","02.concepts\u002F07.threat-model\u002F03.known-gaps",{"title":163,"path":164,"stem":165},"Origins, sequences and tool results","\u002Fconcepts\u002Fthreat-model\u002Forigins-and-results","02.concepts\u002F07.threat-model\u002F04.origins-and-results",{"title":167,"path":168,"stem":169,"children":170,"icon":172},"Outbound connections","\u002Fconcepts\u002Foutbound-connections","02.concepts\u002F08.outbound-connections\u002F00.index",[171,173,177,181],{"title":167,"path":168,"stem":169,"icon":172},"i-ph-arrow-square-out",{"title":174,"path":175,"stem":176},"Server outbound connections","\u002Fconcepts\u002Foutbound-connections\u002Fserver","02.concepts\u002F08.outbound-connections\u002F01.server",{"title":178,"path":179,"stem":180},"Node and plugin outbound connections","\u002Fconcepts\u002Foutbound-connections\u002Fnodes-and-plugins","02.concepts\u002F08.outbound-connections\u002F02.nodes-and-plugins",{"title":182,"path":183,"stem":184},"Addresses a model provider fetches","\u002Fconcepts\u002Foutbound-connections\u002Fprovider-fetches","02.concepts\u002F08.outbound-connections\u002F03.provider-fetches",{"title":186,"path":187,"stem":188,"children":189,"icon":191},"Run receipts","\u002Fconcepts\u002Frun-receipts","02.concepts\u002F09.run-receipts\u002F00.index",[190,192,196,200],{"title":186,"path":187,"stem":188,"icon":191},"i-ph-receipt",{"title":193,"path":194,"stem":195},"Authority envelopes and delegation","\u002Fconcepts\u002Frun-receipts\u002Fauthority","02.concepts\u002F09.run-receipts\u002F01.authority",{"title":197,"path":198,"stem":199},"Call bindings and budget charges","\u002Fconcepts\u002Frun-receipts\u002Fcalls-and-charges","02.concepts\u002F09.run-receipts\u002F02.calls-and-charges",{"title":201,"path":202,"stem":203},"Verify run receipts offline","\u002Fconcepts\u002Frun-receipts\u002Fverify","02.concepts\u002F09.run-receipts\u002F03.verify",{"title":205,"path":206,"stem":207,"icon":208},"Delegation and identity","\u002Fconcepts\u002Fdelegation-and-identity","02.concepts\u002F10.delegation-and-identity","i-ph-identification-badge",{"title":210,"path":211,"stem":212,"icon":213},"How a tool call is decided","\u002Fconcepts\u002Fhow-a-tool-call-is-decided","02.concepts\u002F11.how-a-tool-call-is-decided","i-ph-list-checks",{"title":215,"path":216,"stem":217,"children":218,"icon":71},"Run","\u002Fagents","03.agents\u002F00.index",[219,221,226,231,236,240,245,250,268,299],{"title":220,"path":216,"stem":217},"Run agents",{"title":222,"path":223,"stem":224,"icon":225},"Run jobs","\u002Fagents\u002Frun-jobs","03.agents\u002F01.run-jobs","i-ph-play",{"title":227,"path":228,"stem":229,"icon":230},"Job history","\u002Fagents\u002Fhistory","03.agents\u002F02.history","i-ph-clock-counter-clockwise",{"title":232,"path":233,"stem":234,"icon":235},"Long jobs","\u002Fagents\u002Flong-jobs","03.agents\u002F03.long-jobs","i-ph-hourglass-medium",{"title":237,"path":238,"stem":239,"icon":235},"Waiting for events","\u002Fagents\u002Fwaiting-for-events","03.agents\u002F04.waiting-for-events",{"title":241,"path":242,"stem":243,"icon":244},"Delegation","\u002Fagents\u002Fdelegation","03.agents\u002F05.delegation","i-ph-git-fork",{"title":246,"path":247,"stem":248,"icon":249},"Colleagues and the board","\u002Fagents\u002Fcolleagues","03.agents\u002F06.colleagues","i-ph-chats-circle",{"title":251,"path":252,"stem":253,"children":254,"icon":249},"Conversations","\u002Fagents\u002Fconversations","03.agents\u002F07.conversations\u002F00.index",[255,256,260,264],{"title":251,"path":252,"stem":253,"icon":249},{"title":257,"path":258,"stem":259},"Conversation access and history","\u002Fagents\u002Fconversations\u002Faccess-and-history","03.agents\u002F07.conversations\u002F02.access-and-history",{"title":261,"path":262,"stem":263},"Use conversations from an app","\u002Fagents\u002Fconversations\u002Fapps","03.agents\u002F07.conversations\u002F03.apps",{"title":265,"path":266,"stem":267},"Hand off a conversation and use Ask","\u002Fagents\u002Fconversations\u002Fhandoffs-and-ask","03.agents\u002F07.conversations\u002F04.handoffs-and-ask",{"title":269,"path":270,"stem":271,"children":272,"icon":274},"Decide an approval","\u002Fagents\u002Fapprovals","03.agents\u002F08.approvals\u002F00.index",[273,275,279,283,287,291,295],{"title":269,"path":270,"stem":271,"icon":274},"i-ph-hand-palm",{"title":276,"path":277,"stem":278},"Configure approval ownership and deadlines","\u002Fagents\u002Fapprovals\u002Fconfigure","03.agents\u002F08.approvals\u002F02.configure",{"title":280,"path":281,"stem":282},"How approval decisions bind a call","\u002Fagents\u002Fapprovals\u002Fsecurity","03.agents\u002F08.approvals\u002F03.security",{"title":284,"path":285,"stem":286},"Edit an approval or allow repeated calls","\u002Fagents\u002Fapprovals\u002Fedits-and-repeat-calls","03.agents\u002F08.approvals\u002F04.edits-and-repeat-calls",{"title":288,"path":289,"stem":290},"Resolve loop, budget and recovery waits","\u002Fagents\u002Fapprovals\u002Frecovery","03.agents\u002F08.approvals\u002F05.recovery",{"title":292,"path":293,"stem":294},"Review approval statistics and test cards","\u002Fagents\u002Fapprovals\u002Fstatistics","03.agents\u002F08.approvals\u002F06.statistics",{"title":296,"path":297,"stem":298},"Decide approvals from an app","\u002Fagents\u002Fapprovals\u002Fapps","03.agents\u002F08.approvals\u002F07.apps",{"title":300,"path":301,"stem":302,"icon":303},"Asking people","\u002Fagents\u002Fasking-people","03.agents\u002F09.asking-people","i-ph-chat-circle-dots",{"title":305,"path":306,"stem":307,"children":308,"icon":71},"Build","\u002Fbuild","04.build\u002F00.index",[309,310,655,844],{"title":305,"path":306,"stem":307},{"title":311,"path":312,"stem":313,"children":314,"icon":71},"Plugins","\u002Fbuild\u002Fplugins","04.build\u002F01.plugins\u002F00.index",[315,316,321,352,357,362,367,378,397,412,417,422,427,442,447,452,457,472,476,481,492,497,502,640],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319,"icon":320},"What a plugin is","\u002Fbuild\u002Fplugins\u002Foverview","04.build\u002F01.plugins\u002F01.overview","i-ph-puzzle-piece",{"title":322,"path":323,"stem":324,"children":325,"icon":327},"Install a plugin","\u002Fbuild\u002Fplugins\u002Finstall","04.build\u002F01.plugins\u002F02.install\u002F00.index",[326,328,332,336,340,344,348],{"title":322,"path":323,"stem":324,"icon":327},"i-ph-package",{"title":329,"path":330,"stem":331,"icon":327},"Review an install","\u002Fbuild\u002Fplugins\u002Finstall\u002Freview","04.build\u002F01.plugins\u002F02.install\u002F01.review",{"title":333,"path":334,"stem":335,"icon":327},"Install from a source","\u002Fbuild\u002Fplugins\u002Finstall\u002Fsources","04.build\u002F01.plugins\u002F02.install\u002F02.sources",{"title":337,"path":338,"stem":339,"icon":327},"Update a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Fupdate","04.build\u002F01.plugins\u002F02.install\u002F03.update",{"title":341,"path":342,"stem":343,"icon":327},"Roll out a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Frollouts","04.build\u002F01.plugins\u002F02.install\u002F04.rollouts",{"title":345,"path":346,"stem":347,"icon":327},"Grant access between plugins","\u002Fbuild\u002Fplugins\u002Finstall\u002Fgrants","04.build\u002F01.plugins\u002F02.install\u002F05.grants",{"title":349,"path":350,"stem":351,"icon":327},"Retire or remove a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Fretire-and-remove","04.build\u002F01.plugins\u002F02.install\u002F06.retire-and-remove",{"title":353,"path":354,"stem":355,"icon":356},"Configure an installed plugin","\u002Fbuild\u002Fplugins\u002Fconfigure","04.build\u002F01.plugins\u002F03.configure","i-ph-sliders-horizontal",{"title":358,"path":359,"stem":360,"icon":361},"Sets","\u002Fbuild\u002Fplugins\u002Fsets","04.build\u002F01.plugins\u002F04.sets","i-ph-stack",{"title":363,"path":364,"stem":365,"icon":366},"Your first plugin","\u002Fbuild\u002Fplugins\u002Ffirst-plugin","04.build\u002F01.plugins\u002F05.first-plugin","i-ph-hammer",{"title":368,"path":369,"stem":370,"children":371,"icon":373},"Structure a plugin","\u002Fbuild\u002Fplugins\u002Fstructure","04.build\u002F01.plugins\u002F06.structure\u002F00.index",[372,374],{"title":368,"path":369,"stem":370,"icon":373},"i-ph-tree-structure",{"title":375,"path":376,"stem":377,"icon":373},"Plugin structure rules","\u002Fbuild\u002Fplugins\u002Fstructure\u002Flint-rules","04.build\u002F01.plugins\u002F06.structure\u002F01.lint-rules",{"title":379,"path":380,"stem":381,"children":382,"icon":384},"Develop a plugin","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test","04.build\u002F01.plugins\u002F07.develop-and-test\u002F00.index",[383,385,389,393],{"title":379,"path":380,"stem":381,"icon":384},"i-ph-flask",{"title":386,"path":387,"stem":388,"icon":384},"Check a plugin candidate","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Fcandidate-checks","04.build\u002F01.plugins\u002F07.develop-and-test\u002F01.candidate-checks",{"title":390,"path":391,"stem":392,"icon":384},"Lint and test a plugin","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Flint-and-tests","04.build\u002F01.plugins\u002F07.develop-and-test\u002F02.lint-and-tests",{"title":394,"path":395,"stem":396,"icon":384},"Run failure drills","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Ftests-and-drills","04.build\u002F01.plugins\u002F07.develop-and-test\u002F03.tests-and-drills",{"title":398,"path":399,"stem":400,"children":401,"icon":403},"Build in Studio","\u002Fbuild\u002Fplugins\u002Fstudio","04.build\u002F01.plugins\u002F08.studio\u002F00.index",[402,404,408],{"title":398,"path":399,"stem":400,"icon":403},"i-ph-code",{"title":405,"path":406,"stem":407,"icon":403},"Test and explain a draft","\u002Fbuild\u002Fplugins\u002Fstudio\u002Ftest-and-explain","04.build\u002F01.plugins\u002F08.studio\u002F01.test-and-explain",{"title":409,"path":410,"stem":411,"icon":403},"Release a workspace plugin","\u002Fbuild\u002Fplugins\u002Fstudio\u002Frelease","04.build\u002F01.plugins\u002F08.studio\u002F02.release",{"title":413,"path":414,"stem":415,"icon":416},"The build kit","\u002Fbuild\u002Fplugins\u002Fclaude-code","04.build\u002F01.plugins\u002F09.claude-code","i-ph-sparkle",{"title":418,"path":419,"stem":420,"icon":421},"Example: support triage","\u002Fbuild\u002Fplugins\u002Fexample-support-triage","04.build\u002F01.plugins\u002F10.example-support-triage","i-ph-lifebuoy",{"title":423,"path":424,"stem":425,"icon":426},"Publish and version","\u002Fbuild\u002Fplugins\u002Fpublish","04.build\u002F01.plugins\u002F11.publish","i-ph-tag",{"title":428,"path":429,"stem":430,"children":431,"icon":433},"List a plugin","\u002Fbuild\u002Fplugins\u002Flist-a-plugin","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F00.index",[432,434,438],{"title":428,"path":429,"stem":430,"icon":433},"i-ph-storefront",{"title":435,"path":436,"stem":437,"icon":433},"Hub review checks","\u002Fbuild\u002Fplugins\u002Flist-a-plugin\u002Freview","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F01.review",{"title":439,"path":440,"stem":441,"icon":433},"Maintain a listing","\u002Fbuild\u002Fplugins\u002Flist-a-plugin\u002Fmaintain","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F02.maintain",{"title":443,"path":444,"stem":445,"icon":446},"The catalog","\u002Fbuild\u002Fplugins\u002Fcatalog","04.build\u002F01.plugins\u002F13.catalog","i-ph-books",{"title":448,"path":449,"stem":450,"icon":451},"Folders, bundles and OCI","\u002Fbuild\u002Fplugins\u002Fsources","04.build\u002F01.plugins\u002F14.sources","i-ph-archive",{"title":453,"path":454,"stem":455,"icon":456},"The workspace","\u002Fbuild\u002Fplugins\u002Fworkspace","04.build\u002F01.plugins\u002F15.workspace","i-ph-folder-notch-open",{"title":458,"path":459,"stem":460,"children":461,"icon":463},"Use a plugin index","\u002Fbuild\u002Fplugins\u002Findexes","04.build\u002F01.plugins\u002F16.indexes\u002F00.index",[462,464,468],{"title":458,"path":459,"stem":460,"icon":463},"i-ph-seal-check",{"title":465,"path":466,"stem":467,"icon":463},"Read index version records","\u002Fbuild\u002Fplugins\u002Findexes\u002Fversion-records","04.build\u002F01.plugins\u002F16.indexes\u002F01.version-records",{"title":469,"path":470,"stem":471,"icon":463},"Manage plugin indexes","\u002Fbuild\u002Fplugins\u002Findexes\u002Fmanage","04.build\u002F01.plugins\u002F16.indexes\u002F02.manage",{"title":473,"path":474,"stem":475,"icon":327},"Existing MCP packages","\u002Fbuild\u002Fplugins\u002Fpackages","04.build\u002F01.plugins\u002F17.packages",{"title":477,"path":478,"stem":479,"icon":480},"MCP servers from container images","\u002Fbuild\u002Fplugins\u002Fcontainer-images","04.build\u002F01.plugins\u002F18.container-images","i-ph-cube",{"title":482,"path":483,"stem":484,"children":485,"icon":487},"Import agent plugins","\u002Fbuild\u002Fplugins\u002Fclaude-code-and-agent-plugins","04.build\u002F01.plugins\u002F19.claude-code-and-agent-plugins\u002F00.index",[486,488],{"title":482,"path":483,"stem":484,"icon":487},"i-ph-arrow-square-in",{"title":489,"path":490,"stem":491,"icon":487},"Import from registries","\u002Fbuild\u002Fplugins\u002Fclaude-code-and-agent-plugins\u002Fmarketplaces","04.build\u002F01.plugins\u002F19.claude-code-and-agent-plugins\u002F01.marketplaces",{"title":493,"path":494,"stem":495,"icon":496},"GitHub","\u002Fbuild\u002Fplugins\u002Fgithub","04.build\u002F01.plugins\u002F20.github","i-ph-github-logo",{"title":498,"path":499,"stem":500,"icon":501},"Known vulnerabilities","\u002Fbuild\u002Fplugins\u002Fvulnerabilities","04.build\u002F01.plugins\u002F21.vulnerabilities","i-ph-shield-warning",{"title":503,"path":504,"stem":505,"children":506,"icon":71},"Verified plugins","\u002Fbuild\u002Fplugins\u002Fverified","04.build\u002F01.plugins\u002F22.verified\u002F01.index",[507,508,513,518,523,528,533,538,543,548,553,558,580,585,589,594,599,604,608,612,617,622,626],{"title":503,"path":504,"stem":505,"icon":463},{"title":509,"path":510,"stem":511,"icon":512},"ai.oz0\u002Fweb","\u002Fbuild\u002Fplugins\u002Fverified\u002Fweb","04.build\u002F01.plugins\u002F22.verified\u002F02.web","i-ph-globe",{"title":514,"path":515,"stem":516,"icon":517},"ai.oz0\u002Fnet-diag","\u002Fbuild\u002Fplugins\u002Fverified\u002Fnet-diag","04.build\u002F01.plugins\u002F22.verified\u002F03.net-diag","i-ph-network",{"title":519,"path":520,"stem":521,"icon":522},"ai.oz0\u002Fcve-triage","\u002Fbuild\u002Fplugins\u002Fverified\u002Fcve-triage","04.build\u002F01.plugins\u002F22.verified\u002F04.cve-triage","i-ph-bug",{"title":524,"path":525,"stem":526,"icon":527},"ai.oz0\u002Fhost-health","\u002Fbuild\u002Fplugins\u002Fverified\u002Fhost-health","04.build\u002F01.plugins\u002F22.verified\u002F05.host-health","i-ph-heartbeat",{"title":529,"path":530,"stem":531,"icon":532},"ai.oz0\u002Fpr-reviewer","\u002Fbuild\u002Fplugins\u002Fverified\u002Fpr-reviewer","04.build\u002F01.plugins\u002F22.verified\u002F06.pr-reviewer","i-ph-git-pull-request",{"title":534,"path":535,"stem":536,"icon":537},"Slack","\u002Fbuild\u002Fplugins\u002Fverified\u002Fslack","04.build\u002F01.plugins\u002F22.verified\u002F07.slack","i-ph-slack-logo",{"title":539,"path":540,"stem":541,"icon":542},"Discord","\u002Fbuild\u002Fplugins\u002Fverified\u002Fdiscord","04.build\u002F01.plugins\u002F22.verified\u002F08.discord","i-ph-discord-logo",{"title":544,"path":545,"stem":546,"icon":547},"Microsoft Teams","\u002Fbuild\u002Fplugins\u002Fverified\u002Fteams","04.build\u002F01.plugins\u002F22.verified\u002F09.teams","i-ph-microsoft-teams-logo",{"title":549,"path":550,"stem":551,"icon":552},"ai.oz0\u002Fai-spend","\u002Fbuild\u002Fplugins\u002Fverified\u002Fai-spend","04.build\u002F01.plugins\u002F22.verified\u002F10.ai-spend","i-ph-coins",{"title":554,"path":555,"stem":556,"icon":557},"ai.oz0\u002Fa2a-remote","\u002Fbuild\u002Fplugins\u002Fverified\u002Fa2a-remote","04.build\u002F01.plugins\u002F22.verified\u002F11.a2a-remote","i-ph-arrows-left-right",{"title":559,"path":560,"stem":561,"children":562,"icon":98},"Guardrails","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F00.index",[563,564,568,572,576],{"title":559,"path":560,"stem":561,"icon":98},{"title":565,"path":566,"stem":567,"icon":98},"Configure guardrails","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fsettings","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F01.settings",{"title":569,"path":570,"stem":571,"icon":98},"Check classified text","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fclassified-text","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F02.classified-text",{"title":573,"path":574,"stem":575,"icon":98},"Check shell commands","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fcommands","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F03.commands",{"title":577,"path":578,"stem":579,"icon":98},"Guardrail coverage and limits","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fintent-and-limits","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F04.intent-and-limits",{"title":581,"path":582,"stem":583,"icon":584},"ai.oz0\u002Fmemory","\u002Fbuild\u002Fplugins\u002Fverified\u002Fmemory","04.build\u002F01.plugins\u002F22.verified\u002F13.memory","i-ph-brain",{"title":586,"path":587,"stem":588,"icon":416},"ai.oz0\u002Fsetup-assistant","\u002Fbuild\u002Fplugins\u002Fverified\u002Fsetup-assistant","04.build\u002F01.plugins\u002F22.verified\u002F14.setup-assistant",{"title":590,"path":591,"stem":592,"icon":593},"ai.oz0\u002Fpublic-access","\u002Fbuild\u002Fplugins\u002Fverified\u002Fpublic-access","04.build\u002F01.plugins\u002F22.verified\u002F15.public-access","i-ph-files",{"title":595,"path":596,"stem":597,"icon":598},"ai.oz0\u002Femail","\u002Fbuild\u002Fplugins\u002Fverified\u002Femail","04.build\u002F01.plugins\u002F22.verified\u002F16.email","i-ph-envelope-simple",{"title":600,"path":601,"stem":602,"icon":603},"Atlassian Cloud","\u002Fbuild\u002Fplugins\u002Fverified\u002Fatlassian","04.build\u002F01.plugins\u002F22.verified\u002F17.atlassian","i-ph-kanban",{"title":605,"path":606,"stem":607,"icon":603},"Atlassian Data Center","\u002Fbuild\u002Fplugins\u002Fverified\u002Fatlassian-dc","04.build\u002F01.plugins\u002F22.verified\u002F18.atlassian-dc",{"title":609,"path":610,"stem":611,"icon":421},"ServiceNow","\u002Fbuild\u002Fplugins\u002Fverified\u002Fservicenow","04.build\u002F01.plugins\u002F22.verified\u002F19.servicenow",{"title":613,"path":614,"stem":615,"icon":616},"GitLab","\u002Fbuild\u002Fplugins\u002Fverified\u002Fgitlab","04.build\u002F01.plugins\u002F22.verified\u002F20.gitlab","i-ph-git-merge",{"title":618,"path":619,"stem":620,"icon":621},"Support triage","\u002Fbuild\u002Fplugins\u002Fverified\u002Fsupport-triage","04.build\u002F01.plugins\u002F22.verified\u002F21.support-triage","i-ph-ticket",{"title":623,"path":624,"stem":625,"icon":361},"Essentials","\u002Fbuild\u002Fplugins\u002Fverified\u002Fessentials","04.build\u002F01.plugins\u002F22.verified\u002F22.essentials",{"title":627,"path":628,"stem":629,"children":630,"icon":532},"Plugin improver","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F00.index",[631,632,636],{"title":627,"path":628,"stem":629,"icon":532},{"title":633,"path":634,"stem":635,"icon":532},"How an improvement runs","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver\u002Fjob-lifecycle","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F01.job-lifecycle",{"title":637,"path":638,"stem":639,"icon":532},"Improver limits and records","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver\u002Flimits-and-records","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F02.limits-and-records",{"title":641,"path":642,"stem":643,"children":644,"icon":646},"Plugin size limits","\u002Fbuild\u002Fplugins\u002Flimits","04.build\u002F01.plugins\u002F23.limits\u002F00.index",[645,647,651],{"title":641,"path":642,"stem":643,"icon":646},"i-ph-ruler",{"title":648,"path":649,"stem":650,"icon":646},"Documentation limits","\u002Fbuild\u002Fplugins\u002Flimits\u002Fdocumentation","04.build\u002F01.plugins\u002F23.limits\u002F01.documentation",{"title":652,"path":653,"stem":654,"icon":646},"Artifact and index limits","\u002Fbuild\u002Fplugins\u002Flimits\u002Fartifacts","04.build\u002F01.plugins\u002F23.limits\u002F02.artifacts",{"title":656,"path":657,"stem":658,"children":659,"icon":71},"Parts","\u002Fbuild\u002Fparts","04.build\u002F02.parts\u002F00.index",[660,662,667,672,690,721,726,730,741,756,761,776,791,814,818,823,828,839],{"title":661,"path":657,"stem":658},"Plugin parts",{"title":663,"path":664,"stem":665,"icon":666},"Agents","\u002Fbuild\u002Fparts\u002Fagents","04.build\u002F02.parts\u002F01.agents","i-ph-robot",{"title":668,"path":669,"stem":670,"icon":671},"What an agent combines","\u002Fbuild\u002Fparts\u002Fwhat-an-agent-combines","04.build\u002F02.parts\u002F02.what-an-agent-combines","i-ph-intersect-three",{"title":673,"path":674,"stem":675,"children":676,"icon":646},"Agent contracts","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F00.index",[677,678,682,686],{"title":673,"path":674,"stem":675,"icon":646},{"title":679,"path":680,"stem":681,"icon":646},"Agent failure kinds","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Ffailures","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F01.failures",{"title":683,"path":684,"stem":685,"icon":646},"Agent limits","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Flimits","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F02.limits",{"title":687,"path":688,"stem":689,"icon":646},"Agent budgets","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Fbudgets","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F03.budgets",{"title":691,"path":692,"stem":693,"children":694,"icon":696},"Write a tool","\u002Fbuild\u002Fparts\u002Ftools","04.build\u002F02.parts\u002F04.tools\u002F00.index",[695,697,701,705,709,713,717],{"title":691,"path":692,"stem":693,"icon":696},"i-ph-wrench",{"title":698,"path":699,"stem":700,"icon":696},"Describe tool functions","\u002Fbuild\u002Fparts\u002Ftools\u002Fdefinitions","04.build\u002F02.parts\u002F04.tools\u002F01.definitions",{"title":702,"path":703,"stem":704,"icon":696},"Return results and files","\u002Fbuild\u002Fparts\u002Ftools\u002Fresults-and-files","04.build\u002F02.parts\u002F04.tools\u002F02.results-and-files",{"title":706,"path":707,"stem":708,"icon":696},"Handle tool call lifecycle","\u002Fbuild\u002Fparts\u002Ftools\u002Fcall-lifecycle","04.build\u002F02.parts\u002F04.tools\u002F03.call-lifecycle",{"title":710,"path":711,"stem":712,"icon":696},"Pin tool definitions","\u002Fbuild\u002Fparts\u002Ftools\u002Fsnapshots","04.build\u002F02.parts\u002F04.tools\u002F04.snapshots",{"title":714,"path":715,"stem":716,"icon":696},"Call a model from a tool","\u002Fbuild\u002Fparts\u002Ftools\u002Fmodel-calls","04.build\u002F02.parts\u002F04.tools\u002F05.model-calls",{"title":718,"path":719,"stem":720,"icon":696},"Tool labels and approvals","\u002Fbuild\u002Fparts\u002Ftools\u002Fpolicy","04.build\u002F02.parts\u002F04.tools\u002F06.policy",{"title":722,"path":723,"stem":724,"icon":725},"TypeScript tools","\u002Fbuild\u002Fparts\u002Ftypescript-tools","04.build\u002F02.parts\u002F05.typescript-tools","i-ph-file-code",{"title":727,"path":728,"stem":729,"icon":725},"Import an OpenAPI document","\u002Fbuild\u002Fparts\u002Fopenapi-import","04.build\u002F02.parts\u002F06.openapi-import",{"title":731,"path":732,"stem":733,"children":734,"icon":736},"Write and load skills","\u002Fbuild\u002Fparts\u002Fskills","04.build\u002F02.parts\u002F07.skills\u002F00.index",[735,737],{"title":731,"path":732,"stem":733,"icon":736},"i-ph-graduation-cap",{"title":738,"path":739,"stem":740,"icon":736},"Review skill use and proposals","\u002Fbuild\u002Fparts\u002Fskills\u002Fusage-and-proposals","04.build\u002F02.parts\u002F07.skills\u002F01.usage-and-proposals",{"title":742,"path":743,"stem":744,"children":745,"icon":747},"Write a flow","\u002Fbuild\u002Fparts\u002Fflows","04.build\u002F02.parts\u002F08.flows\u002F00.index",[746,748,752],{"title":742,"path":743,"stem":744,"icon":747},"i-ph-flow-arrow",{"title":749,"path":750,"stem":751,"icon":747},"Flow steps and expressions","\u002Fbuild\u002Fparts\u002Fflows\u002Fsteps-and-expressions","04.build\u002F02.parts\u002F08.flows\u002F01.steps-and-expressions",{"title":753,"path":754,"stem":755,"icon":747},"Expose and explain flows","\u002Fbuild\u002Fparts\u002Fflows\u002Fflow-tools","04.build\u002F02.parts\u002F08.flows\u002F02.flow-tools",{"title":757,"path":758,"stem":759,"icon":760},"Hooks","\u002Fbuild\u002Fparts\u002Fhooks","04.build\u002F02.parts\u002F09.hooks","i-ph-anchor",{"title":762,"path":763,"stem":764,"children":765,"icon":767},"Declare an event source","\u002Fbuild\u002Fparts\u002Fevent-sources","04.build\u002F02.parts\u002F10.event-sources\u002F00.index",[766,768,772],{"title":762,"path":763,"stem":764,"icon":767},"i-ph-broadcast",{"title":769,"path":770,"stem":771,"icon":767},"Bind and answer deliveries","\u002Fbuild\u002Fparts\u002Fevent-sources\u002Fdelivery-binding","04.build\u002F02.parts\u002F10.event-sources\u002F01.delivery-binding",{"title":773,"path":774,"stem":775,"icon":767},"Use platform events","\u002Fbuild\u002Fparts\u002Fevent-sources\u002Fplatform-events","04.build\u002F02.parts\u002F10.event-sources\u002F02.platform-events",{"title":777,"path":778,"stem":779,"children":780,"icon":782},"Declare a connection","\u002Fbuild\u002Fparts\u002Fconnections","04.build\u002F02.parts\u002F11.connections\u002F00.index",[781,783,787],{"title":777,"path":778,"stem":779,"icon":782},"i-ph-plugs-connected",{"title":784,"path":785,"stem":786,"icon":782},"Connection token lifecycle","\u002Fbuild\u002Fparts\u002Fconnections\u002Ftoken-lifecycle","04.build\u002F02.parts\u002F11.connections\u002F01.token-lifecycle",{"title":788,"path":789,"stem":790,"icon":782},"Connection setup and security","\u002Fbuild\u002Fparts\u002Fconnections\u002Fsetup-and-security","04.build\u002F02.parts\u002F11.connections\u002F02.setup-and-security",{"title":792,"path":793,"stem":794,"children":795,"icon":797},"Choose a harness","\u002Fbuild\u002Fparts\u002Fharnesses","04.build\u002F02.parts\u002F12.harnesses\u002F00.index",[796,798,802,806,810],{"title":792,"path":793,"stem":794,"icon":797},"i-ph-cpu",{"title":799,"path":800,"stem":801,"icon":797},"Harness tool controls","\u002Fbuild\u002Fparts\u002Fharnesses\u002Ftool-controls","04.build\u002F02.parts\u002F12.harnesses\u002F01.tool-controls",{"title":803,"path":804,"stem":805,"icon":797},"Recover a harness session","\u002Fbuild\u002Fparts\u002Fharnesses\u002Frecovery","04.build\u002F02.parts\u002F12.harnesses\u002F02.recovery",{"title":807,"path":808,"stem":809,"icon":797},"Write a harness","\u002Fbuild\u002Fparts\u002Fharnesses\u002Fcustom-harnesses","04.build\u002F02.parts\u002F12.harnesses\u002F03.custom-harnesses",{"title":811,"path":812,"stem":813,"icon":797},"Use an ACP agent","\u002Fbuild\u002Fparts\u002Fharnesses\u002Facp","04.build\u002F02.parts\u002F12.harnesses\u002F04.acp",{"title":815,"path":816,"stem":817,"icon":782},"Bring your own agent","\u002Fbuild\u002Fparts\u002Fbring-your-own-agent","04.build\u002F02.parts\u002F13.bring-your-own-agent",{"title":819,"path":820,"stem":821,"icon":822},"Records and start-up text","\u002Fbuild\u002Fparts\u002Frecords-and-startup","04.build\u002F02.parts\u002F14.records-and-startup","i-ph-database",{"title":824,"path":825,"stem":826,"icon":827},"Addresses","\u002Fbuild\u002Fparts\u002Faddresses","04.build\u002F02.parts\u002F15.addresses","i-ph-signpost",{"title":829,"path":830,"stem":831,"children":832,"icon":834},"Define a routine","\u002Fbuild\u002Fparts\u002Froutines","04.build\u002F02.parts\u002F16.routines\u002F00.index",[833,835],{"title":829,"path":830,"stem":831,"icon":834},"i-ph-clock-clockwise",{"title":836,"path":837,"stem":838,"icon":834},"Routine permissions and outputs","\u002Fbuild\u002Fparts\u002Froutines\u002Foutputs-and-permissions","04.build\u002F02.parts\u002F16.routines\u002F01.outputs-and-permissions",{"title":840,"path":841,"stem":842,"icon":843},"When to split an agent","\u002Fbuild\u002Fparts\u002Fwhen-to-split-an-agent","04.build\u002F02.parts\u002F17.when-to-split-an-agent","i-ph-arrows-split",{"title":845,"path":846,"stem":847,"children":848,"icon":71},"Apps on OZ","\u002Fbuild\u002Fapps","04.build\u002F03.apps\u002F00.index",[849,851,862,867,872,876,880,884,894,908,913,928,942],{"title":850,"path":846,"stem":847},"Applications and clients",{"title":852,"path":853,"stem":854,"children":855,"icon":857},"Use the runtime API","\u002Fbuild\u002Fapps\u002Fruntime-api","04.build\u002F03.apps\u002F01.runtime-api\u002F00.index",[856,858],{"title":852,"path":853,"stem":854,"icon":857},"i-ph-plug",{"title":859,"path":860,"stem":861,"icon":857},"Runtime API authentication","\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication","04.build\u002F03.apps\u002F01.runtime-api\u002F01.authentication",{"title":863,"path":864,"stem":865,"icon":866},"Python SDK","\u002Fbuild\u002Fapps\u002Fsdk-python","04.build\u002F03.apps\u002F02.sdk-python","i-ph-file-py",{"title":868,"path":869,"stem":870,"icon":871},"TypeScript SDK","\u002Fbuild\u002Fapps\u002Fsdk-typescript","04.build\u002F03.apps\u002F03.sdk-typescript","i-ph-file-ts",{"title":873,"path":874,"stem":875,"icon":725},"Go SDK","\u002Fbuild\u002Fapps\u002Fsdk-go","04.build\u002F03.apps\u002F04.sdk-go",{"title":877,"path":878,"stem":879,"icon":782},"AG-UI for your apps","\u002Fbuild\u002Fapps\u002Fag-ui","04.build\u002F03.apps\u002F05.ag-ui",{"title":881,"path":882,"stem":883,"icon":249},"A chat in your own app","\u002Fbuild\u002Fapps\u002Fchat-app","04.build\u002F03.apps\u002F06.chat-app",{"title":885,"path":886,"stem":887,"children":888,"icon":767},"Follow live jobs","\u002Fbuild\u002Fapps\u002Flive-feeds","04.build\u002F03.apps\u002F07.live-feeds\u002F00.index",[889,890],{"title":885,"path":886,"stem":887,"icon":767},{"title":891,"path":892,"stem":893,"icon":767},"Feed access and browser streams","\u002Fbuild\u002Fapps\u002Flive-feeds\u002Fbrowser-and-access","04.build\u002F03.apps\u002F07.live-feeds\u002F01.browser-and-access",{"title":895,"path":896,"stem":897,"children":898,"icon":782},"Call agents over MCP","\u002Fbuild\u002Fapps\u002Fmcp-server","04.build\u002F03.apps\u002F08.mcp-server\u002F00.index",[899,900,904],{"title":895,"path":896,"stem":897,"icon":782},{"title":901,"path":902,"stem":903,"icon":782},"MCP client OAuth","\u002Fbuild\u002Fapps\u002Fmcp-server\u002Foauth","04.build\u002F03.apps\u002F08.mcp-server\u002F01.oauth",{"title":905,"path":906,"stem":907,"icon":782},"MCP security and limits","\u002Fbuild\u002Fapps\u002Fmcp-server\u002Fsecurity-and-limits","04.build\u002F03.apps\u002F08.mcp-server\u002F02.security-and-limits",{"title":909,"path":910,"stem":911,"icon":912},"A2A agents","\u002Fbuild\u002Fapps\u002Fa2a","04.build\u002F03.apps\u002F09.a2a","i-ph-share-network",{"title":914,"path":915,"stem":916,"children":917,"icon":919},"Run a remote agent","\u002Fbuild\u002Fapps\u002Fremote-agents","04.build\u002F03.apps\u002F10.remote-agents\u002F00.index",[918,920,924],{"title":914,"path":915,"stem":916,"icon":919},"i-ph-cloud-arrow-down",{"title":921,"path":922,"stem":923,"icon":919},"Remote sessions and limits","\u002Fbuild\u002Fapps\u002Fremote-agents\u002Fsessions-and-limits","04.build\u002F03.apps\u002F10.remote-agents\u002F01.sessions-and-limits",{"title":925,"path":926,"stem":927,"icon":919},"Connect an outside A2A agent","\u002Fbuild\u002Fapps\u002Fremote-agents\u002Fa2a","04.build\u002F03.apps\u002F10.remote-agents\u002F02.a2a",{"title":929,"path":930,"stem":931,"children":932,"icon":249},"Connect a chat channel","\u002Fbuild\u002Fapps\u002Fchat-channels","04.build\u002F03.apps\u002F11.chat-channels\u002F00.index",[933,934,938],{"title":929,"path":930,"stem":931,"icon":249},{"title":935,"path":936,"stem":937,"icon":249},"Chat channel conversations","\u002Fbuild\u002Fapps\u002Fchat-channels\u002Fconversations","04.build\u002F03.apps\u002F11.chat-channels\u002F01.conversations",{"title":939,"path":940,"stem":941,"icon":249},"Build a chat channel","\u002Fbuild\u002Fapps\u002Fchat-channels\u002Fbuild","04.build\u002F03.apps\u002F11.chat-channels\u002F02.build",{"title":943,"path":944,"stem":945,"icon":946},"Interop matrix","\u002Fbuild\u002Fapps\u002Finterop","04.build\u002F03.apps\u002F12.interop","i-ph-check-square-offset",{"title":948,"path":949,"stem":950,"children":951,"icon":71},"Improve","\u002Fimprove","05.improve\u002F00.index",[952,953,958,963,968,994,1021,1026,1031,1036],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"icon":957},"Search, compare and fix","\u002Fimprove\u002Fsearch-and-compare","05.improve\u002F01.search-and-compare","i-ph-magnifying-glass",{"title":959,"path":960,"stem":961,"icon":962},"Errors and insights","\u002Fimprove\u002Ferrors-and-insights","05.improve\u002F02.errors-and-insights","i-ph-chart-line",{"title":964,"path":965,"stem":966,"icon":967},"Measured savings","\u002Fimprove\u002Fmeasured-savings","05.improve\u002F03.measured-savings","i-ph-scales",{"title":969,"path":970,"stem":971,"children":972,"icon":463},"Evals and quality gates","\u002Fimprove\u002Fevals","05.improve\u002F04.evals\u002F00.index",[973,974,978,982,986,990],{"title":969,"path":970,"stem":971,"icon":463},{"title":975,"path":976,"stem":977},"Case expectations","\u002Fimprove\u002Fevals\u002Fcases","05.improve\u002F04.evals\u002F01.cases",{"title":979,"path":980,"stem":981},"Record and replay answers","\u002Fimprove\u002Fevals\u002Frecordings","05.improve\u002F04.evals\u002F02.recordings",{"title":983,"path":984,"stem":985},"Check policy paths","\u002Fimprove\u002Fevals\u002Fcoverage","05.improve\u002F04.evals\u002F03.coverage",{"title":987,"path":988,"stem":989},"Gate a plugin update","\u002Fimprove\u002Fevals\u002Fquality-gates","05.improve\u002F04.evals\u002F04.quality-gates",{"title":991,"path":992,"stem":993},"Track quality and regressions","\u002Fimprove\u002Fevals\u002Fregressions","05.improve\u002F04.evals\u002F05.regressions",{"title":995,"path":996,"stem":997,"children":998,"icon":1000},"Outcome checks and patterns","\u002Fimprove\u002Foutcome-checks","05.improve\u002F05.outcome-checks\u002F00.index",[999,1001,1005,1009,1013,1017],{"title":995,"path":996,"stem":997,"icon":1000},"i-ph-gavel",{"title":1002,"path":1003,"stem":1004},"Choose a judge and rubric","\u002Fimprove\u002Foutcome-checks\u002Fjudges","05.improve\u002F05.outcome-checks\u002F01.judges",{"title":1006,"path":1007,"stem":1008},"Measure a judge over time","\u002Fimprove\u002Foutcome-checks\u002Fsampling","05.improve\u002F05.outcome-checks\u002F02.sampling",{"title":1010,"path":1011,"stem":1012},"Use a reviewer agent","\u002Fimprove\u002Foutcome-checks\u002Freviewer","05.improve\u002F05.outcome-checks\u002F03.reviewer",{"title":1014,"path":1015,"stem":1016},"Choose among candidate answers","\u002Fimprove\u002Foutcome-checks\u002Fselection","05.improve\u002F05.outcome-checks\u002F04.selection",{"title":1018,"path":1019,"stem":1020},"Test and roll out judged agents","\u002Fimprove\u002Foutcome-checks\u002Frollouts","05.improve\u002F05.outcome-checks\u002F05.rollouts",{"title":1022,"path":1023,"stem":1024,"icon":1025},"Measured results","\u002Fimprove\u002Fmeasured-results","05.improve\u002F06.measured-results","i-ph-chart-bar",{"title":1027,"path":1028,"stem":1029,"icon":1030},"Comparisons of a changed agent","\u002Fimprove\u002Fcomparisons-of-a-changed-agent","05.improve\u002F07.comparisons-of-a-changed-agent","i-ph-git-diff",{"title":1032,"path":1033,"stem":1034,"icon":1035},"Where a fix belongs","\u002Fimprove\u002Fwhere-a-fix-belongs","05.improve\u002F08.where-a-fix-belongs","i-ph-ladder",{"title":1037,"path":1038,"stem":1039,"icon":957},"Evidence for agents","\u002Fimprove\u002Fevidence-for-agents","05.improve\u002F09.evidence-for-agents",{"title":1041,"path":1042,"stem":1043,"children":1044,"icon":71},"Govern","\u002Fgovern","06.govern\u002F00.index",[1045,1047,1085,1089,1111,1115,1120,1151,1170,1175,1180,1184,1207],{"title":1046,"path":1042,"stem":1043},"Govern agents",{"title":1048,"path":1049,"stem":1050,"children":1051,"icon":98},"Tool policy","\u002Fgovern\u002Ftool-policy","06.govern\u002F01.tool-policy\u002F00.index",[1052,1053,1057,1061,1065,1069,1073,1077,1081],{"title":1048,"path":1049,"stem":1050,"icon":98},{"title":1054,"path":1055,"stem":1056},"Export and apply a tool policy","\u002Fgovern\u002Ftool-policy\u002Ffiles","06.govern\u002F01.tool-policy\u002F02.files",{"title":1058,"path":1059,"stem":1060},"Rules for plugin and remote functions","\u002Fgovern\u002Ftool-policy\u002Fplugin-functions","06.govern\u002F01.tool-policy\u002F03.plugin-functions",{"title":1062,"path":1063,"stem":1064},"Function conditions and action classes","\u002Fgovern\u002Ftool-policy\u002Fconditions","06.govern\u002F01.tool-policy\u002F04.conditions",{"title":1066,"path":1067,"stem":1068},"Rules for taint, origins and sequences","\u002Fgovern\u002Ftool-policy\u002Forigins-and-sequences","06.govern\u002F01.tool-policy\u002F05.origins-and-sequences",{"title":1070,"path":1071,"stem":1072},"How the runtime enforces tool policy","\u002Fgovern\u002Ftool-policy\u002Fruntime","06.govern\u002F01.tool-policy\u002F06.runtime",{"title":1074,"path":1075,"stem":1076},"Preview, review and lint tool policy changes","\u002Fgovern\u002Ftool-policy\u002Freview-changes","06.govern\u002F01.tool-policy\u002F07.review-changes",{"title":1078,"path":1079,"stem":1080},"Assign duties to tool calls","\u002Fgovern\u002Ftool-policy\u002Fduties","06.govern\u002F01.tool-policy\u002F08.duties",{"title":1082,"path":1083,"stem":1084},"Command rules in a tool policy","\u002Fgovern\u002Ftool-policy\u002Fcommand-rules","06.govern\u002F01.tool-policy\u002F09.command-rules",{"title":1086,"path":1087,"stem":1088,"icon":230},"Governance replay","\u002Fgovern\u002Fgovernance-replay","06.govern\u002F02.governance-replay",{"title":1090,"path":1091,"stem":1092,"children":1093,"icon":532},"Reviewed changes","\u002Fgovern\u002Freviewed-changes","06.govern\u002F03.reviewed-changes\u002F00.index",[1094,1095,1099,1103,1107],{"title":1090,"path":1091,"stem":1092,"icon":532},{"title":1096,"path":1097,"stem":1098},"Review assistant and job proposals","\u002Fgovern\u002Freviewed-changes\u002Fproposals","06.govern\u002F03.reviewed-changes\u002F02.proposals",{"title":1100,"path":1101,"stem":1102},"Review plugin configurations","\u002Fgovern\u002Freviewed-changes\u002Fplugin-configurations","06.govern\u002F03.reviewed-changes\u002F03.plugin-configurations",{"title":1104,"path":1105,"stem":1106},"Review and roll back changesets","\u002Fgovern\u002Freviewed-changes\u002Fchangesets","06.govern\u002F03.reviewed-changes\u002F04.changesets",{"title":1108,"path":1109,"stem":1110},"Review changes to protected paths","\u002Fgovern\u002Freviewed-changes\u002Fprotected-paths","06.govern\u002F03.reviewed-changes\u002F05.protected-paths",{"title":1112,"path":1113,"stem":1114,"icon":666},"AI labels","\u002Fgovern\u002Fai-labels","06.govern\u002F04.ai-labels",{"title":1116,"path":1117,"stem":1118,"icon":1119},"Kill switches","\u002Fgovern\u002Fkill-switches","06.govern\u002F05.kill-switches","i-ph-power",{"title":1121,"path":1122,"stem":1123,"children":1124,"icon":1126},"Personal data","\u002Fgovern\u002Fpersonal-data","06.govern\u002F06.personal-data\u002F00.index",[1125,1127,1131,1135,1139,1143,1147],{"title":1121,"path":1122,"stem":1123,"icon":1126},"i-ph-user-minus",{"title":1128,"path":1129,"stem":1130},"Associate people and purposes with jobs","\u002Fgovern\u002Fpersonal-data\u002Fassociate-people","06.govern\u002F06.personal-data\u002F01.associate-people",{"title":1132,"path":1133,"stem":1134},"Find and export personal data","\u002Fgovern\u002Fpersonal-data\u002Fexport","06.govern\u002F06.personal-data\u002F02.export",{"title":1136,"path":1137,"stem":1138},"Restrict processing and record contests","\u002Fgovern\u002Fpersonal-data\u002Frestrictions-and-contests","06.govern\u002F06.personal-data\u002F03.restrictions-and-contests",{"title":1140,"path":1141,"stem":1142},"Erase personal data","\u002Fgovern\u002Fpersonal-data\u002Ferase","06.govern\u002F06.personal-data\u002F04.erase",{"title":1144,"path":1145,"stem":1146},"Retain records and restore backups","\u002Fgovern\u002Fpersonal-data\u002Fretention","06.govern\u002F06.personal-data\u002F05.retention",{"title":1148,"path":1149,"stem":1150},"Personal data held by plugins","\u002Fgovern\u002Fpersonal-data\u002Fplugin-records","06.govern\u002F06.personal-data\u002F06.plugin-records",{"title":1152,"path":1153,"stem":1154,"children":1155,"icon":1157},"Taint and labels","\u002Fgovern\u002Ftaint-and-labels","06.govern\u002F07.taint-and-labels\u002F00.index",[1156,1158,1162,1166],{"title":1152,"path":1153,"stem":1154,"icon":1157},"i-ph-drop-half-bottom",{"title":1159,"path":1160,"stem":1161},"Set rules on taint and labels","\u002Fgovern\u002Ftaint-and-labels\u002Frules","06.govern\u002F07.taint-and-labels\u002F02.rules",{"title":1163,"path":1164,"stem":1165},"Set clearance, egress and content walls","\u002Fgovern\u002Ftaint-and-labels\u002Flabel-policies","06.govern\u002F07.taint-and-labels\u002F03.label-policies",{"title":1167,"path":1168,"stem":1169},"Read outside text in a quarantine child","\u002Fgovern\u002Ftaint-and-labels\u002Fquarantine","06.govern\u002F07.taint-and-labels\u002F04.quarantine",{"title":1171,"path":1172,"stem":1173,"icon":1174},"Works-council mode","\u002Fgovern\u002Fworks-council-mode","06.govern\u002F08.works-council-mode","i-ph-users-three",{"title":1176,"path":1177,"stem":1178,"icon":1179},"Incidents","\u002Fgovern\u002Fincidents","06.govern\u002F09.incidents","i-ph-siren",{"title":1181,"path":1182,"stem":1183,"icon":213},"Inventory","\u002Fgovern\u002Finventory","06.govern\u002F10.inventory",{"title":1185,"path":1186,"stem":1187,"children":1188,"icon":1190},"Audit trail","\u002Fgovern\u002Faudit-trail","06.govern\u002F11.audit-trail\u002F00.index",[1189,1191,1195,1199,1203],{"title":1185,"path":1186,"stem":1187,"icon":1190},"i-ph-scroll",{"title":1192,"path":1193,"stem":1194},"Audit records and run identity","\u002Fgovern\u002Faudit-trail\u002Frecords","06.govern\u002F11.audit-trail\u002F02.records",{"title":1196,"path":1197,"stem":1198},"Verify the audit chain","\u002Fgovern\u002Faudit-trail\u002Fverification","06.govern\u002F11.audit-trail\u002F03.verification",{"title":1200,"path":1201,"stem":1202},"Export and verify evidence bundles","\u002Fgovern\u002Faudit-trail\u002Fevidence-bundles","06.govern\u002F11.audit-trail\u002F04.evidence-bundles",{"title":1204,"path":1205,"stem":1206},"Audit retention, erasure and legal holds","\u002Fgovern\u002Faudit-trail\u002Fretention","06.govern\u002F11.audit-trail\u002F05.retention",{"title":1208,"path":1209,"stem":1210,"children":1211,"icon":1213},"Command rules","\u002Fgovern\u002Fcommand-rules","06.govern\u002F12.command-rules\u002F00.index",[1212,1214,1218,1222,1226],{"title":1208,"path":1209,"stem":1210,"icon":1213},"i-ph-terminal",{"title":1215,"path":1216,"stem":1217},"Command rule patterns","\u002Fgovern\u002Fcommand-rules\u002Fpatterns","06.govern\u002F12.command-rules\u002F02.patterns",{"title":1219,"path":1220,"stem":1221},"What the command reader understands","\u002Fgovern\u002Fcommand-rules\u002Fcommand-reader","06.govern\u002F12.command-rules\u002F03.command-reader",{"title":1223,"path":1224,"stem":1225},"Create a command rule from an approval","\u002Fgovern\u002Fcommand-rules\u002Fallow-from-card","06.govern\u002F12.command-rules\u002F04.allow-from-card",{"title":1227,"path":1228,"stem":1229},"Command rule evaluation and limits","\u002Fgovern\u002Fcommand-rules\u002Fevaluation-and-limits","06.govern\u002F12.command-rules\u002F05.evaluation-and-limits",{"title":1231,"path":1232,"stem":1233,"children":1234,"icon":71},"Fleet","\u002Ffleet","07.fleet\u002F00.index",[1235,1237,1242,1247,1251,1256,1260,1265,1270,1274,1278,1297,1302,1307,1325,1329,1333,1352,1357,1380,1385,1390,1395,1399,1458,1462,1467,1481,1486,1490,1494],{"title":1236,"path":1232,"stem":1233},"Operate a fleet",{"title":1238,"path":1239,"stem":1240,"icon":1241},"Dev mode","\u002Ffleet\u002Fdev-mode","07.fleet\u002F01.dev-mode","i-ph-laptop",{"title":1243,"path":1244,"stem":1245,"icon":1246},"Run a cluster","\u002Ffleet\u002Fcluster","07.fleet\u002F02.cluster","i-ph-hard-drives",{"title":1248,"path":1249,"stem":1250,"icon":782},"Join nodes","\u002Ffleet\u002Fjoin-nodes","07.fleet\u002F03.join-nodes",{"title":1252,"path":1253,"stem":1254,"icon":1255},"Manage nodes","\u002Ffleet\u002Fmanage-nodes","07.fleet\u002F04.manage-nodes","i-ph-list-bullets",{"title":1257,"path":1258,"stem":1259,"icon":527},"Node health","\u002Ffleet\u002Fnodes","07.fleet\u002F05.nodes",{"title":1261,"path":1262,"stem":1263,"icon":1264},"Nodes as services","\u002Ffleet\u002Fservices","07.fleet\u002F06.services","i-ph-gear-six",{"title":1266,"path":1267,"stem":1268,"icon":1269},"Doctor","\u002Ffleet\u002Fdoctor","07.fleet\u002F07.doctor","i-ph-stethoscope",{"title":1271,"path":1272,"stem":1273,"icon":421},"Troubleshooting","\u002Ffleet\u002Ftroubleshooting","07.fleet\u002F08.troubleshooting",{"title":1275,"path":1276,"stem":1277,"icon":962},"Tracing and metrics","\u002Ffleet\u002Fobservability","07.fleet\u002F09.observability",{"title":1279,"path":1280,"stem":1281,"children":1282,"icon":1284},"Choose sandbox tier 2","\u002Ffleet\u002Fsandbox-tier-2","07.fleet\u002F10.sandbox-tier-2\u002F00.index",[1283,1285,1289,1293],{"title":1279,"path":1280,"stem":1281,"icon":1284},"i-ph-shield-chevron",{"title":1286,"path":1287,"stem":1288,"icon":1284},"Set up gVisor","\u002Ffleet\u002Fsandbox-tier-2\u002Fgvisor","07.fleet\u002F10.sandbox-tier-2\u002F01.gvisor",{"title":1290,"path":1291,"stem":1292,"icon":1284},"Set up microVM isolation","\u002Ffleet\u002Fsandbox-tier-2\u002Fmicrovms","07.fleet\u002F10.sandbox-tier-2\u002F02.microvms",{"title":1294,"path":1295,"stem":1296,"icon":1284},"Configure remote sandboxes","\u002Ffleet\u002Fsandbox-tier-2\u002Fremote","07.fleet\u002F10.sandbox-tier-2\u002F03.remote",{"title":1298,"path":1299,"stem":1300,"icon":1301},"Sandbox on macOS","\u002Ffleet\u002Fsandbox-on-macos","07.fleet\u002F11.sandbox-on-macos","i-ph-apple-logo",{"title":1303,"path":1304,"stem":1305,"icon":1306},"Sandbox on Windows","\u002Ffleet\u002Fsandbox-on-windows","07.fleet\u002F12.sandbox-on-windows","i-ph-windows-logo",{"title":1308,"path":1309,"stem":1310,"children":1311,"icon":797},"Configure local models","\u002Ffleet\u002Flocal-models","07.fleet\u002F13.local-models\u002F00.index",[1312,1313,1317,1321],{"title":1308,"path":1309,"stem":1310,"icon":797},{"title":1314,"path":1315,"stem":1316,"icon":797},"Share a local model with the fleet","\u002Ffleet\u002Flocal-models\u002Ffleet","07.fleet\u002F13.local-models\u002F01.fleet",{"title":1318,"path":1319,"stem":1320,"icon":797},"Review local-model safety checks","\u002Ffleet\u002Flocal-models\u002Ftrust","07.fleet\u002F13.local-models\u002F02.trust",{"title":1322,"path":1323,"stem":1324,"icon":797},"Size and price local models","\u002Ffleet\u002Flocal-models\u002Fsizing-and-cost","07.fleet\u002F13.local-models\u002F03.sizing-and-cost",{"title":1326,"path":1327,"stem":1328,"icon":1241},"Agents on a Mac with MLX","\u002Ffleet\u002Flocal-models-on-a-mac","07.fleet\u002F14.local-models-on-a-mac",{"title":1330,"path":1331,"stem":1332,"icon":127},"Queues","\u002Ffleet\u002Fqueues","07.fleet\u002F15.queues",{"title":1334,"path":1335,"stem":1336,"children":1337,"icon":1339},"Choose a Temporal backend","\u002Ffleet\u002Ftemporal-backends","07.fleet\u002F16.temporal-backends\u002F00.index",[1338,1340,1344,1348],{"title":1334,"path":1335,"stem":1336,"icon":1339},"i-ph-cloud",{"title":1341,"path":1342,"stem":1343},"Set retention and move tenants","\u002Ffleet\u002Ftemporal-backends\u002Fretention-and-migration","07.fleet\u002F16.temporal-backends\u002F01.retention-and-migration",{"title":1345,"path":1346,"stem":1347},"Encrypt Temporal payloads","\u002Ffleet\u002Ftemporal-backends\u002Fencryption","07.fleet\u002F16.temporal-backends\u002F02.encryption",{"title":1349,"path":1350,"stem":1351},"Read payloads in Temporal UI","\u002Ffleet\u002Ftemporal-backends\u002Fcodec","07.fleet\u002F16.temporal-backends\u002F03.codec",{"title":1353,"path":1354,"stem":1355,"icon":1356},"Regions","\u002Ffleet\u002Fregions","07.fleet\u002F17.regions","i-ph-globe-hemisphere-east",{"title":1358,"path":1359,"stem":1360,"children":1361,"icon":1363},"Run the roles separately","\u002Ffleet\u002Fseparate-roles","07.fleet\u002F18.separate-roles\u002F00.index",[1362,1364,1368,1372,1376],{"title":1358,"path":1359,"stem":1360,"icon":1363},"i-ph-squares-four",{"title":1365,"path":1366,"stem":1367},"Prepare database rights","\u002Ffleet\u002Fseparate-roles\u002Fdatabase-rights","07.fleet\u002F18.separate-roles\u002F01.database-rights",{"title":1369,"path":1370,"stem":1371},"Keep plaintext secrets on edges","\u002Ffleet\u002Fseparate-roles\u002Fsecrets","07.fleet\u002F18.separate-roles\u002F02.secrets",{"title":1373,"path":1374,"stem":1375},"Operate through role outages","\u002Ffleet\u002Fseparate-roles\u002Foutages","07.fleet\u002F18.separate-roles\u002F03.outages",{"title":1377,"path":1378,"stem":1379},"Use Temporal UI with separate roles","\u002Ffleet\u002Fseparate-roles\u002Ftemporal-ui","07.fleet\u002F18.separate-roles\u002F04.temporal-ui",{"title":1381,"path":1382,"stem":1383,"icon":1384},"High availability","\u002Ffleet\u002Fhigh-availability","07.fleet\u002F19.high-availability","i-ph-copy",{"title":1386,"path":1387,"stem":1388,"icon":1389},"Management over a WAN","\u002Ffleet\u002Fmanagement-over-a-wan","07.fleet\u002F20.management-over-a-wan","i-ph-globe-hemisphere-west",{"title":1391,"path":1392,"stem":1393,"icon":1394},"Cloud federation","\u002Ffleet\u002Fcloud-federation","07.fleet\u002F21.cloud-federation","i-ph-cloud-check",{"title":1396,"path":1397,"stem":1398,"icon":451},"Payload storage","\u002Ffleet\u002Fpayload-storage","07.fleet\u002F22.payload-storage",{"title":1400,"path":1401,"stem":1402,"children":1403,"icon":1405},"Upgrade a cluster","\u002Ffleet\u002Fupgrades","07.fleet\u002F23.upgrades\u002F00.index",[1404,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454],{"title":1400,"path":1401,"stem":1402,"icon":1405},"i-ph-arrows-clockwise",{"title":1407,"path":1408,"stem":1409},"Prepare for sandbox changes","\u002Ffleet\u002Fupgrades\u002Fsandbox-changes","07.fleet\u002F23.upgrades\u002F01.sandbox-changes",{"title":1411,"path":1412,"stem":1413},"Review policy changes","\u002Ffleet\u002Fupgrades\u002Fpolicy-changes","07.fleet\u002F23.upgrades\u002F02.policy-changes",{"title":1415,"path":1416,"stem":1417},"Review data and privacy migrations","\u002Ffleet\u002Fupgrades\u002Fdata-migrations","07.fleet\u002F23.upgrades\u002F03.data-migrations",{"title":1419,"path":1420,"stem":1421},"Prepare storage and identity migrations","\u002Ffleet\u002Fupgrades\u002Fstorage-and-identity","07.fleet\u002F23.upgrades\u002F04.storage-and-identity",{"title":1423,"path":1424,"stem":1425},"Prepare plugins for an upgrade","\u002Ffleet\u002Fupgrades\u002Fplugin-changes","07.fleet\u002F23.upgrades\u002F05.plugin-changes",{"title":1427,"path":1428,"stem":1429},"Keep calls compatible during upgrades","\u002Ffleet\u002Fupgrades\u002Fcall-compatibility","07.fleet\u002F23.upgrades\u002F06.call-compatibility",{"title":1431,"path":1432,"stem":1433},"Review model and budget migrations","\u002Ffleet\u002Fupgrades\u002Fmodel-and-budget-changes","07.fleet\u002F23.upgrades\u002F07.model-and-budget-changes",{"title":1435,"path":1436,"stem":1437},"Migrate to shared worker pools","\u002Ffleet\u002Fupgrades\u002Fshared-pools","07.fleet\u002F23.upgrades\u002F08.shared-pools",{"title":1439,"path":1440,"stem":1441},"Upgrade node binaries and runtimes","\u002Ffleet\u002Fupgrades\u002Fnodes","07.fleet\u002F23.upgrades\u002F09.nodes",{"title":1443,"path":1444,"stem":1445},"Understand runtime shutdown","\u002Ffleet\u002Fupgrades\u002Fruntime-shutdown","07.fleet\u002F23.upgrades\u002F10.runtime-shutdown",{"title":1447,"path":1448,"stem":1449},"Review runtime behaviour changes","\u002Ffleet\u002Fupgrades\u002Fruntime-changes","07.fleet\u002F23.upgrades\u002F11.runtime-changes",{"title":1451,"path":1452,"stem":1453},"Verify releases and switch channels","\u002Ffleet\u002Fupgrades\u002Frelease-verification","07.fleet\u002F23.upgrades\u002F12.release-verification",{"title":1455,"path":1456,"stem":1457},"Roll a runtime out in steps","\u002Ffleet\u002Fupgrades\u002Fruntime-rollouts","07.fleet\u002F23.upgrades\u002F13.runtime-rollouts",{"title":1459,"path":1460,"stem":1461,"icon":463},"Releases","\u002Ffleet\u002Freleases","07.fleet\u002F24.releases",{"title":1463,"path":1464,"stem":1465,"icon":1466},"Docker","\u002Ffleet\u002Fdocker","07.fleet\u002F25.docker","i-ph-shipping-container",{"title":1468,"path":1469,"stem":1470,"children":1471,"icon":480},"Deploy with Kubernetes","\u002Ffleet\u002Fkubernetes","07.fleet\u002F26.kubernetes\u002F00.index",[1472,1473,1477],{"title":1468,"path":1469,"stem":1470,"icon":480},{"title":1474,"path":1475,"stem":1476,"icon":480},"Helm objects and values","\u002Ffleet\u002Fkubernetes\u002Fvalues","07.fleet\u002F26.kubernetes\u002F01.values",{"title":1478,"path":1479,"stem":1480,"icon":480},"Maintain a Kubernetes deployment","\u002Ffleet\u002Fkubernetes\u002Fmaintenance","07.fleet\u002F26.kubernetes\u002F02.maintenance",{"title":1482,"path":1483,"stem":1484,"icon":1485},"Offline install","\u002Ffleet\u002Foffline-install","07.fleet\u002F27.offline-install","i-ph-airplane-tilt",{"title":1487,"path":1488,"stem":1489,"icon":98},"FIPS builds","\u002Ffleet\u002Ffips","07.fleet\u002F28.fips",{"title":1491,"path":1492,"stem":1493,"icon":249},"Run Orchestrator Zero from an MCP client","\u002Ffleet\u002Fmcp-client","07.fleet\u002F29.mcp-client",{"title":1495,"path":1496,"stem":1497,"children":1498,"icon":451},"Back up a cluster","\u002Ffleet\u002Fbackups","07.fleet\u002F30.backups\u002F00.index",[1499,1500],{"title":1495,"path":1496,"stem":1497,"icon":451},{"title":1501,"path":1502,"stem":1503},"Restore a cluster","\u002Ffleet\u002Fbackups\u002Frestore","07.fleet\u002F30.backups\u002F01.restore",{"title":1505,"path":1506,"stem":1507,"children":1508,"icon":71},"Spend","\u002Fspend","08.spend\u002F00.index",[1509,1511,1533,1547,1585],{"title":1510,"path":1506,"stem":1507},"Manage model access and spending",{"title":1512,"path":1513,"stem":1514,"children":1515,"icon":552},"Read cost and usage","\u002Fspend\u002Fcost-and-usage","08.spend\u002F01.cost-and-usage\u002F00.index",[1516,1517,1521,1525,1529],{"title":1512,"path":1513,"stem":1514,"icon":552},{"title":1518,"path":1519,"stem":1520},"Understand recorded charges","\u002Fspend\u002Fcost-and-usage\u002Faccounting","08.spend\u002F01.cost-and-usage\u002F01.accounting",{"title":1522,"path":1523,"stem":1524},"Read model call timings","\u002Fspend\u002Fcost-and-usage\u002Ftimings","08.spend\u002F01.cost-and-usage\u002F02.timings",{"title":1526,"path":1527,"stem":1528},"Export usage","\u002Fspend\u002Fcost-and-usage\u002Fexports","08.spend\u002F01.cost-and-usage\u002F03.exports",{"title":1530,"path":1531,"stem":1532},"Explain prices and cache costs","\u002Fspend\u002Fcost-and-usage\u002Fprices-and-cache","08.spend\u002F01.cost-and-usage\u002F04.prices-and-cache",{"title":1534,"path":1535,"stem":1536,"children":1537,"icon":134},"Set budgets and quotas","\u002Fspend\u002Fbudgets-and-quotas","08.spend\u002F02.budgets-and-quotas\u002F00.index",[1538,1539,1543],{"title":1534,"path":1535,"stem":1536,"icon":134},{"title":1540,"path":1541,"stem":1542,"icon":134},"Understand quota charging and refusals","\u002Fspend\u002Fbudgets-and-quotas\u002Fcharging","08.spend\u002F02.budgets-and-quotas\u002F01.charging",{"title":1544,"path":1545,"stem":1546,"icon":134},"Request and review budget","\u002Fspend\u002Fbudgets-and-quotas\u002Frequests","08.spend\u002F02.budgets-and-quotas\u002F02.requests",{"title":1548,"path":1549,"stem":1550,"children":1551,"icon":416},"Connect a model provider","\u002Fspend\u002Fmodels-and-keys","08.spend\u002F03.models-and-keys\u002F00.index",[1552,1553,1557,1561,1565,1569,1573,1577,1581],{"title":1548,"path":1549,"stem":1550,"icon":416},{"title":1554,"path":1555,"stem":1556},"Choose model aliases","\u002Fspend\u002Fmodels-and-keys\u002Faliases","08.spend\u002F03.models-and-keys\u002F01.aliases",{"title":1558,"path":1559,"stem":1560},"Map a plugin's models","\u002Fspend\u002Fmodels-and-keys\u002Fmapping","08.spend\u002F03.models-and-keys\u002F02.mapping",{"title":1562,"path":1563,"stem":1564},"Set reasoning effort and cascades","\u002Fspend\u002Fmodels-and-keys\u002Feffort-and-cascades","08.spend\u002F03.models-and-keys\u002F03.effort-and-cascades",{"title":1566,"path":1567,"stem":1568},"Authenticate model calls","\u002Fspend\u002Fmodels-and-keys\u002Fauthentication","08.spend\u002F03.models-and-keys\u002F04.authentication",{"title":1570,"path":1571,"stem":1572},"Control what model calls can reach","\u002Fspend\u002Fmodels-and-keys\u002Fdata-rules","08.spend\u002F03.models-and-keys\u002F05.data-rules",{"title":1574,"path":1575,"stem":1576},"Pool model deployments","\u002Fspend\u002Fmodels-and-keys\u002Fdeployment-pools","08.spend\u002F03.models-and-keys\u002F06.deployment-pools",{"title":1578,"path":1579,"stem":1580},"Configure caches and server tools","\u002Fspend\u002Fmodels-and-keys\u002Fcache-and-tools","08.spend\u002F03.models-and-keys\u002F07.cache-and-tools",{"title":1582,"path":1583,"stem":1584},"Check model changes and retirement","\u002Fspend\u002Fmodels-and-keys\u002Fcanaries-and-retirement","08.spend\u002F03.models-and-keys\u002F08.canaries-and-retirement",{"title":1586,"path":1587,"stem":1588,"icon":1589},"Translating providers","\u002Fspend\u002Ftranslating-providers","08.spend\u002F04.translating-providers","i-ph-translate",{"title":1591,"path":1592,"stem":1593,"children":1594,"icon":71},"Admin","\u002Fadmin","09.admin\u002F00.index",[1595,1597,1623,1650,1654,1658,1680,1685,1696],{"title":1596,"path":1592,"stem":1593},"Administer access and credentials",{"title":1598,"path":1599,"stem":1600,"children":1601,"icon":98},"Configure sign-in","\u002Fadmin\u002Fsign-in","09.admin\u002F01.sign-in\u002F00.index",[1602,1603,1607,1611,1615,1619],{"title":1598,"path":1599,"stem":1600,"icon":98},{"title":1604,"path":1605,"stem":1606},"Configure an identity provider","\u002Fadmin\u002Fsign-in\u002Fidentity-providers","09.admin\u002F01.sign-in\u002F01.identity-providers",{"title":1608,"path":1609,"stem":1610},"Provision accounts from a directory","\u002Fadmin\u002Fsign-in\u002Fprovisioning","09.admin\u002F01.sign-in\u002F02.provisioning",{"title":1612,"path":1613,"stem":1614},"Manage passwords and second factors","\u002Fadmin\u002Fsign-in\u002Fpasswords","09.admin\u002F01.sign-in\u002F03.passwords",{"title":1616,"path":1617,"stem":1618},"Sign in from the CLI and MCP clients","\u002Fadmin\u002Fsign-in\u002Fclients","09.admin\u002F01.sign-in\u002F04.clients",{"title":1620,"path":1621,"stem":1622},"End sessions and inspect sign-in events","\u002Fadmin\u002Fsign-in\u002Fsessions","09.admin\u002F01.sign-in\u002F05.sessions",{"title":1624,"path":1625,"stem":1626,"children":1627,"icon":1629},"Manage tenant secrets","\u002Fadmin\u002Fsecrets","09.admin\u002F02.secrets\u002F00.index",[1628,1630,1634,1638,1642,1646],{"title":1624,"path":1625,"stem":1626,"icon":1629},"i-ph-key",{"title":1631,"path":1632,"stem":1633},"Bind secrets to destination hosts","\u002Fadmin\u002Fsecrets\u002Fhost-bindings","09.admin\u002F02.secrets\u002F01.host-bindings",{"title":1635,"path":1636,"stem":1637},"Test and rotate secrets","\u002Fadmin\u002Fsecrets\u002Frotation","09.admin\u002F02.secrets\u002F02.rotation",{"title":1639,"path":1640,"stem":1641},"Use an external secret store","\u002Fadmin\u002Fsecrets\u002Fexternal-stores","09.admin\u002F02.secrets\u002F03.external-stores",{"title":1643,"path":1644,"stem":1645},"Deliver and scan plugin secrets","\u002Fadmin\u002Fsecrets\u002Fplugin-secrets","09.admin\u002F02.secrets\u002F04.plugin-secrets",{"title":1647,"path":1648,"stem":1649},"Configure plugin settings","\u002Fadmin\u002Fsecrets\u002Fsettings","09.admin\u002F02.secrets\u002F05.settings",{"title":1651,"path":1652,"stem":1653,"icon":1629},"Credential injection","\u002Fadmin\u002Fcredential-injection","09.admin\u002F03.credential-injection",{"title":1655,"path":1656,"stem":1657,"icon":1629},"Key commands","\u002Fadmin\u002Fkey-commands","09.admin\u002F04.key-commands",{"title":1659,"path":1660,"stem":1661,"children":1662,"icon":782},"Connect a plugin to another system","\u002Fadmin\u002Fconnections","09.admin\u002F05.connections\u002F00.index",[1663,1664,1668,1672,1676],{"title":1659,"path":1660,"stem":1661,"icon":782},{"title":1665,"path":1666,"stem":1667,"icon":782},"Renew and reconnect credentials","\u002Fadmin\u002Fconnections\u002Frenewal","09.admin\u002F05.connections\u002F01.renewal",{"title":1669,"path":1670,"stem":1671,"icon":782},"Restrict connection destinations","\u002Fadmin\u002Fconnections\u002Fdestinations","09.admin\u002F05.connections\u002F02.destinations",{"title":1673,"path":1674,"stem":1675,"icon":782},"Diagnose connection failures","\u002Fadmin\u002Fconnections\u002Ftroubleshooting","09.admin\u002F05.connections\u002F03.troubleshooting",{"title":1677,"path":1678,"stem":1679,"icon":782},"Understand connection security","\u002Fadmin\u002Fconnections\u002Fsecurity","09.admin\u002F05.connections\u002F04.security",{"title":1681,"path":1682,"stem":1683,"icon":1684},"Tenants","\u002Fadmin\u002Ftenants","09.admin\u002F06.tenants","i-ph-buildings",{"title":1686,"path":1687,"stem":1688,"children":1689,"icon":1691},"Export and verify a tenant","\u002Fadmin\u002Ftenant-export","09.admin\u002F07.tenant-export\u002F00.index",[1690,1692],{"title":1686,"path":1687,"stem":1688,"icon":1691},"i-ph-export",{"title":1693,"path":1694,"stem":1695,"icon":1691},"Tenant export format","\u002Fadmin\u002Ftenant-export\u002Fformat","09.admin\u002F07.tenant-export\u002F01.format",{"title":1697,"path":1698,"stem":1699,"icon":1700},"Notifications","\u002Fadmin\u002Fnotifications","09.admin\u002F08.notifications","i-ph-bell-ringing",{"title":1702,"path":1703,"stem":1704,"children":1705,"icon":71},"Reference","\u002Freference","10.reference\u002F00.index",[1706,1707,1726,1760,1794,1798,1803,1807,1812,1817,1822,1826],{"title":1702,"path":1703,"stem":1704},{"title":1708,"path":1709,"stem":1710,"children":1711,"icon":1725},"CLI","\u002Freference\u002Fcli","10.reference\u002F01.cli\u002F00.index",[1712,1713,1719],{"title":1708,"path":1709,"stem":1710},{"title":1714,"path":1715,"stem":1716,"children":1717},"oz0","\u002Freference\u002Fcli\u002Foz0","10.reference\u002F01.cli\u002F01.oz0\u002F00.index",[1718],{"title":1714,"path":1715,"stem":1716},{"title":1720,"path":1721,"stem":1722,"children":1723},"oz0-node","\u002Freference\u002Fcli\u002Foz0-node","10.reference\u002F01.cli\u002F02.oz0-node\u002F00.index",[1724],{"title":1720,"path":1721,"stem":1722},"i-ph-terminal-window",{"title":1727,"path":1728,"stem":1729,"children":1730,"icon":725},"oz0-plugin.yaml","\u002Freference\u002Fplugin-manifest","10.reference\u002F02.plugin-manifest\u002F00.index",[1731,1732,1736,1740,1744,1748,1752,1756],{"title":1727,"path":1728,"stem":1729,"icon":725},{"title":1733,"path":1734,"stem":1735},"Dependencies and cross-plugin access","\u002Freference\u002Fplugin-manifest\u002Fdependencies","10.reference\u002F02.plugin-manifest\u002F01.dependencies",{"title":1737,"path":1738,"stem":1739},"Tool declarations","\u002Freference\u002Fplugin-manifest\u002Ftools","10.reference\u002F02.plugin-manifest\u002F02.tools",{"title":1741,"path":1742,"stem":1743},"Harnesses, events and channels","\u002Freference\u002Fplugin-manifest\u002Fruntimes","10.reference\u002F02.plugin-manifest\u002F03.runtimes",{"title":1745,"path":1746,"stem":1747},"Connections and hooks","\u002Freference\u002Fplugin-manifest\u002Fconnections","10.reference\u002F02.plugin-manifest\u002F04.connections",{"title":1749,"path":1750,"stem":1751},"Plugin sets and policies","\u002Freference\u002Fplugin-manifest\u002Fsets-policy","10.reference\u002F02.plugin-manifest\u002F05.sets-policy",{"title":1753,"path":1754,"stem":1755},"Data, evidence and mail","\u002Freference\u002Fplugin-manifest\u002Fdata","10.reference\u002F02.plugin-manifest\u002F06.data",{"title":1757,"path":1758,"stem":1759},"Generated OpenAPI manifests","\u002Freference\u002Fplugin-manifest\u002Fopenapi","10.reference\u002F02.plugin-manifest\u002F07.openapi",{"title":1761,"path":1762,"stem":1763,"children":1764,"icon":666},"Agent definition","\u002Freference\u002Fagent-definition","10.reference\u002F03.agent-definition\u002F00.index",[1765,1766,1770,1774,1778,1782,1786,1790],{"title":1761,"path":1762,"stem":1763,"icon":666},{"title":1767,"path":1768,"stem":1769},"Identity, instructions and tools","\u002Freference\u002Fagent-definition\u002Fidentity","10.reference\u002F03.agent-definition\u002F01.identity",{"title":1771,"path":1772,"stem":1773},"Models and placement","\u002Freference\u002Fagent-definition\u002Fmodels","10.reference\u002F03.agent-definition\u002F02.models",{"title":1775,"path":1776,"stem":1777},"Limits and spend","\u002Freference\u002Fagent-definition\u002Flimits","10.reference\u002F03.agent-definition\u002F03.limits",{"title":1779,"path":1780,"stem":1781},"Judges and candidate selection","\u002Freference\u002Fagent-definition\u002Fquality","10.reference\u002F03.agent-definition\u002F04.quality",{"title":1783,"path":1784,"stem":1785},"Delegation and human decisions","\u002Freference\u002Fagent-definition\u002Fcoordination","10.reference\u002F03.agent-definition\u002F05.coordination",{"title":1787,"path":1788,"stem":1789},"History and recovery","\u002Freference\u002Fagent-definition\u002Fhistory","10.reference\u002F03.agent-definition\u002F06.history",{"title":1791,"path":1792,"stem":1793},"Sandbox, data and retention","\u002Freference\u002Fagent-definition\u002Fsecurity","10.reference\u002F03.agent-definition\u002F07.security",{"title":1795,"path":1796,"stem":1797,"icon":517},"Ports","\u002Freference\u002Fports","10.reference\u002F04.ports",{"title":1799,"path":1800,"stem":1801,"icon":1802},"Environment variables","\u002Freference\u002Fenvironment","10.reference\u002F05.environment","i-ph-brackets-curly",{"title":1804,"path":1805,"stem":1806,"icon":373},"Files and directories","\u002Freference\u002Ffiles","10.reference\u002F06.files",{"title":1808,"path":1809,"stem":1810,"icon":1811},"Lists and pages","\u002Freference\u002Flist-pages","10.reference\u002F07.list-pages","i-ph-list-numbers",{"title":1813,"path":1814,"stem":1815,"icon":1816},"Spend refusals","\u002Freference\u002Fspend-refusals","10.reference\u002F08.spend-refusals","i-ph-hand-coins",{"title":1818,"path":1819,"stem":1820,"icon":1821},"Admin API","\u002Freference\u002Fadmin-api","10.reference\u002F09.admin-api","i-ph-repeat",{"title":1823,"path":1824,"stem":1825},"Compatibility","\u002Freference\u002Fcompatibility","10.reference\u002F10.compatibility",{"title":1827,"path":1828,"stem":1829},"Known issues","\u002Freference\u002Fknown-issues","10.reference\u002F11.known-issues",{"title":1831,"path":1832,"stem":1833,"children":1834,"icon":71},"About","\u002Fabout","11.about\u002F00.index",[1835,1836,1840,1845],{"title":1831,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839,"icon":967},"Licensing","\u002Fabout\u002Flicensing","11.about\u002F01.licensing",{"title":1841,"path":1842,"stem":1843,"icon":1844},"About these docs","\u002Fabout\u002Fcontributing-docs","11.about\u002F02.contributing-docs","i-ph-pencil-simple",{"title":1846,"path":1847,"stem":1848,"icon":42},"A local environment","\u002Fabout\u002Flocal-environment","11.about\u002F03.local-environment",{"id":1850,"title":1116,"body":1851,"description":3219,"extension":3220,"links":3221,"meta":3222,"navigation":3225,"path":1117,"seo":3226,"stem":1118,"__hash__":3227},"docs\u002F06.govern\u002F05.kill-switches.md",{"type":1852,"value":1853,"toc":3198},"minimark",[1854,1858,1861,1971,1976,2026,2031,2042,2057,2060,2072,2153,2160,2163,2166,2169,2184,2187,2190,2194,2200,2204,2210,2213,2216,2219,2226,2229,2232,2236,2246,2276,2283,2287,2300,2304,2316,2341,2353,2362,2371,2374,2442,2462,2468,2474,2541,2544,2548,2562,2566,2569,2572,2575,2578,2582,2589,2597,2600,2608,2611,2615,2622,2629,2633,2636,2639,2642,2645,2649,2652,2721,2728,2731,2738,2741,2748,2755,2758,2761,2765,2782,2866,2875,2878,2942,2952,2960,2963,2974,2977,2990,2993,2997,3047,3053,3063,3069,3072,3117,3123,3140,3144,3151,3182,3194],[1855,1856,1857],"p",{},"For: tenant admins and governance reviewers.",[1855,1859,1860],{},"Set a kill switch when an agent misbehaves, a tool leaks or a tenant's work must stop. The switch reaches every edge and node within seconds. The EU AI Act requires people who can stop high-risk systems; the control is also available for every other system.",[1862,1863,1869],"pre",{"className":1864,"code":1865,"filename":1866,"language":1867,"meta":1868,"style":1868},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","oz0 kill agent acme-triage --reason \"answers customers in a loop\"\noz0 kill tool acme_github --reason \"token leaked\"\noz0 kill tool acme_github.merge --reason \"merges without review\"\noz0 kill tenant --tenant acme --reason \"contract ended\"\n","Terminal","bash","",[1870,1871,1872,1903,1925,1946],"code",{"__ignoreMap":1868},[1873,1874,1877,1880,1884,1887,1890,1893,1897,1900],"span",{"class":1875,"line":1876},"line",1,[1873,1878,1714],{"class":1879},"sBMFI",[1873,1881,1883],{"class":1882},"sfazB"," kill",[1873,1885,1886],{"class":1882}," agent",[1873,1888,1889],{"class":1882}," acme-triage",[1873,1891,1892],{"class":1882}," --reason",[1873,1894,1896],{"class":1895},"sMK4o"," \"",[1873,1898,1899],{"class":1882},"answers customers in a loop",[1873,1901,1902],{"class":1895},"\"\n",[1873,1904,1906,1908,1910,1913,1916,1918,1920,1923],{"class":1875,"line":1905},2,[1873,1907,1714],{"class":1879},[1873,1909,1883],{"class":1882},[1873,1911,1912],{"class":1882}," tool",[1873,1914,1915],{"class":1882}," acme_github",[1873,1917,1892],{"class":1882},[1873,1919,1896],{"class":1895},[1873,1921,1922],{"class":1882},"token leaked",[1873,1924,1902],{"class":1895},[1873,1926,1928,1930,1932,1934,1937,1939,1941,1944],{"class":1875,"line":1927},3,[1873,1929,1714],{"class":1879},[1873,1931,1883],{"class":1882},[1873,1933,1912],{"class":1882},[1873,1935,1936],{"class":1882}," acme_github.merge",[1873,1938,1892],{"class":1882},[1873,1940,1896],{"class":1895},[1873,1942,1943],{"class":1882},"merges without review",[1873,1945,1902],{"class":1895},[1873,1947,1949,1951,1953,1956,1959,1962,1964,1966,1969],{"class":1875,"line":1948},4,[1873,1950,1714],{"class":1879},[1873,1952,1883],{"class":1882},[1873,1954,1955],{"class":1882}," tenant",[1873,1957,1958],{"class":1882}," --tenant",[1873,1960,1961],{"class":1882}," acme",[1873,1963,1892],{"class":1882},[1873,1965,1896],{"class":1895},[1873,1967,1968],{"class":1882},"contract ended",[1873,1970,1902],{"class":1895},[1972,1973,1975],"h2",{"id":1974},"what-stops","What stops",[1977,1978,1979,1992],"table",{},[1980,1981,1982],"thead",{},[1983,1984,1985,1989],"tr",{},[1986,1987,1988],"th",{},"Switch",[1986,1990,1991],{},"Effect",[1993,1994,1995,2010,2018],"tbody",{},[1983,1996,1997,2001],{},[1998,1999,2000],"td",{},"An agent or a flow",[1998,2002,2003,2004,2009],{},"Refuses new jobs and calls, pauses schedules, and parks or cancels running jobs. See ",[2005,2006,2008],"a",{"href":2007},"#agent-and-flow-switches","agent and flow behavior",".",[1983,2011,2012,2015],{},[1998,2013,2014],{},"A tool, or one function",[1998,2016,2017],{},"Every node refuses calls to it: the call fails with the switch's reason, which the job sees like any failed tool call. Jobs keep running",[1983,2019,2020,2023],{},[1998,2021,2022],{},"A tenant",[1998,2024,2025],{},"All of the above for every agent, flow and tool of the tenant",[2027,2028,2030],"h3",{"id":2029},"agent-and-flow-switches","Agent and flow switches",[1855,2032,2033,2034,2037,2038,2041],{},"No new jobs start (",[1870,2035,2036],{},"run",", the runtime API, webhooks, quality gates, fires of ",[2005,2039,2040],{"href":830},"routines","): they are refused with the switch's reason, and the schedules of routines that run it pause until the switch is released.",[1855,2043,2044,2045,2048,2049,2052,2053,2056],{},"The agent's model calls are refused at the gateway (",[1870,2046,2047],{},"403 oz0_killed","; a park switch holds them with ",[1870,2050,2051],{},"503 oz0_parked"," instead), its calls of ",[2005,2054,2055],{"href":1309},"local models"," included, and its tool calls on the nodes, in every running job.",[1855,2058,2059],{},"Its running jobs are parked or cancelled, child jobs included, and so is the agent's work inside another agent's job tree (a child another agent delegated to it).",[1855,2061,2062,2063,2067,2068,2071],{},"A webhook that would start a stopped agent's or flow's job, a ",[2005,2064,2066],{"href":2065},"\u002Fbuild\u002Fparts\u002Fflows#start-one-from-a-webhook","flow's"," or a routine's, answers ",[1870,2069,2070],{},"503 Service Unavailable"," with the switch and its reason, in the shape the gateway refuses model calls with:",[1862,2073,2077],{"className":2074,"code":2075,"language":2076,"meta":1868,"style":1868},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\"type\": \"error\", \"error\": {\"type\": \"oz0_killed\", \"message\": \"kill switch kill-01a1000c-299b-778e-ac0b-fceac0eb3015 stops agent acme-triage: answers customers in a loop\"}}\n","json",[1870,2078,2079],{"__ignoreMap":1868},[1873,2080,2081,2084,2087,2091,2093,2096,2098,2101,2103,2106,2108,2110,2112,2114,2117,2119,2121,2123,2125,2127,2130,2132,2134,2136,2139,2141,2143,2145,2148,2150],{"class":1875,"line":1876},[1873,2082,2083],{"class":1895},"{",[1873,2085,2086],{"class":1895},"\"",[1873,2088,2090],{"class":2089},"spNyl","type",[1873,2092,2086],{"class":1895},[1873,2094,2095],{"class":1895},":",[1873,2097,1896],{"class":1895},[1873,2099,2100],{"class":1882},"error",[1873,2102,2086],{"class":1895},[1873,2104,2105],{"class":1895},",",[1873,2107,1896],{"class":1895},[1873,2109,2100],{"class":2089},[1873,2111,2086],{"class":1895},[1873,2113,2095],{"class":1895},[1873,2115,2116],{"class":1895}," {",[1873,2118,2086],{"class":1895},[1873,2120,2090],{"class":1879},[1873,2122,2086],{"class":1895},[1873,2124,2095],{"class":1895},[1873,2126,1896],{"class":1895},[1873,2128,2129],{"class":1882},"oz0_killed",[1873,2131,2086],{"class":1895},[1873,2133,2105],{"class":1895},[1873,2135,1896],{"class":1895},[1873,2137,2138],{"class":1879},"message",[1873,2140,2086],{"class":1895},[1873,2142,2095],{"class":1895},[1873,2144,1896],{"class":1895},[1873,2146,2147],{"class":1882},"kill switch kill-01a1000c-299b-778e-ac0b-fceac0eb3015 stops agent acme-triage: answers customers in a loop",[1873,2149,2086],{"class":1895},[1873,2151,2152],{"class":1895},"}}\n",[1855,2154,2155,2156,2159],{},"A sender that retries on ",[1870,2157,2158],{},"503"," delivers again once the switch is released; a retried delivery with the same ID is still one job.",[1855,2161,2162],{},"Every edge reloads the switches every second, and tells its nodes about tool switches on their control stream as soon as one changes. In our end-to-end test, new jobs were refused within 1.4 seconds of the switch, the running job was parked within 1.7 seconds, and the node refused the tool within 1.5 seconds.",[1855,2164,2165],{},"A node never calls a tool while it cannot tell what the switches stop. It refuses every tool call until its supervisor has written the list the edge sent, and whenever the file cannot be read or the disk refused the write.",[1855,2167,2168],{},"A node that just joined or started again must receive that list. A starting node removes the policy files of its last run, so a switch set while it was down never waits behind them.",[1855,2170,2171,2172,2175,2176,2179,2180,2183],{},"The refusal says ",[1870,2173,2174],{},"the kill-switch list has not reached this node yet",", or that the list in its file ",[1870,2177,2178],{},"cannot be read"," or ",[1870,2181,2182],{},"is not what the edge sends",". The node's log says why.",[1855,2185,2186],{},"A supervisor whose write fails removes the old list rather than leave it in place, and writes the new one as soon as it can.",[1855,2188,2189],{},"An edge that has not read the switches since it started sends its nodes no list, so a node keeps the one it has instead of one that releases what the edge cannot see.",[1972,2191,2193],{"id":2192},"park-or-cancel","Park or cancel",[1855,2195,2196,2199],{},[1870,2197,2198],{},"--mode"," says what happens to an agent's running jobs:",[2027,2201,2203],{"id":2202},"park-running-jobs","Park running jobs",[1855,2205,2206,2209],{},[1870,2207,2208],{},"park",", the default, pauses them with Temporal's workflow pause, and pauses each of their activities too (a model call, a harness session, a step that waits for its retry): nothing more runs, and nothing is lost.",[1855,2211,2212],{},"A model call that was already under way finishes, or fails and is made again after the release; a harness session that was running stops and runs again from its start after the release.",[1855,2214,2215],{},"When the switch is released, the jobs it paused resume where they were, waiting approvals included, and their activities start again from their first attempt: the time parked uses up none of their retries.",[1855,2217,2218],{},"A tool call that is already running when the switch comes is not paused by the workflow pause: the node checks the switches every second while a call runs, and cancels a call whose tool, agent or tenant the switch stops at its tool server.",[1855,2220,2221,2222,2225],{},"The call then answers ",[1870,2223,2224],{},"The call to acme_github.merge was stopped: a kill switch stops agent acme-triage, ...",", as a tool's error: when the switch is released and the job resumes, the agent reads it and goes on.",[1855,2227,2228],{},"A call that waited for its server checks the switches again before it is sent, and answers the same way.",[1855,2230,2231],{},"So does a harness session's call of its plugin's own MCP server that waited for a person's decision: a switch thrown while the person decided stops it once the answer comes.",[2027,2233,2235],{"id":2234},"cancel-running-jobs","Cancel running jobs",[1855,2237,2238,2241,2242,2245],{},[1870,2239,2240],{},"cancel"," cancels them, as ",[1870,2243,2244],{},"job cancel"," does.",[1862,2247,2249],{"className":1864,"code":2248,"filename":1866,"language":1867,"meta":1868,"style":1868},"oz0 kill agent acme-triage --mode cancel --reason \"wrong prompt in production\"\n",[1870,2250,2251],{"__ignoreMap":1868},[1873,2252,2253,2255,2257,2259,2261,2264,2267,2269,2271,2274],{"class":1875,"line":1876},[1873,2254,1714],{"class":1879},[1873,2256,1883],{"class":1882},[1873,2258,1886],{"class":1882},[1873,2260,1889],{"class":1882},[1873,2262,2263],{"class":1882}," --mode",[1873,2265,2266],{"class":1882}," cancel",[1873,2268,1892],{"class":1882},[1873,2270,1896],{"class":1895},[1873,2272,2273],{"class":1882},"wrong prompt in production",[1873,2275,1902],{"class":1895},[1855,2277,2278,2279,2282],{},"Setting ",[1870,2280,2281],{},"--mode cancel"," on an agent that is parked already turns that switch into a cancel switch: its parked jobs are cancelled, without a moment where they resume. A cancel switch cannot go back to park.",[2027,2284,2286],{"id":2285},"required-temporal-support","Required Temporal support",[1855,2288,2289,2290,2293,2294,2297,2298,2009],{},"Pausing needs Temporal's workflow pause and activity pause, which the embedded Temporal has on. With an external Temporal cluster, set ",[1870,2291,2292],{},"frontend.WorkflowPauseEnabled"," in its dynamic config, and run a version with the activity pause API (",[1870,2295,2296],{},"PauseActivity","); without them, use ",[1870,2299,2281],{},[1972,2301,2303],{"id":2302},"the-fence-every-call-of-a-stopped-job-is-refused-at-every-edge","The fence: every call of a stopped job is refused at every edge",[1855,2305,2306,2307,2311,2312,2315],{},"A switch is also a revocation. Each tenant has an ",[2308,2309,2310],"em",{},"authority epoch",", a counter that every job's ",[2005,2313,2314],{"href":187},"authority envelope"," records when the job starts and that its child jobs copy. A switch moves the tenant to the next epoch, and every edge refuses each call of a job the switch reaches whose envelope is older. New jobs get the new epoch only once its revocations have been computed, so a job that starts while a batch is still open is reached by every revocation that joins it. A cancel switch refuses:",[2317,2318,2319,2331,2338],"ul",{},[2320,2321,2322,2323,2326,2327,2330],"li",{},"a model call through the gateway, a node's local admit, a child job's admission and a harness session's call through the node's proxy answer ",[1870,2324,2325],{},"403"," with ",[1870,2328,2329],{},"oz0_revoked",";",[2320,2332,2333,2334,2337],{},"a ",[2005,2335,2336],{"href":1660},"connection's per-call token"," is refused;",[2320,2339,2340],{},"the job's workflow may not start a child job, schedule a tool call or open a session.",[1855,2342,2343,2344,2348,2349,2352],{},"The edge finds the job by the call's ",[2005,2345,2347],{"href":2346},"\u002Fconcepts\u002Frun-receipts\u002Fcalls-and-charges#calls-bound-to-the-node","binding",", which it stamped itself, never by the ",[1870,2350,2351],{},"Oz0-Agent"," header a node sends: a node that names another agent is refused all the same.",[1855,2354,2355,2356,2358,2359,2361],{},"Model calls already running when an edge loads the switch are cut, and a streamed answer then ends with an ",[1870,2357,2100],{}," event of the same ",[1870,2360,2329],{}," error, so the call fails rather than giving the agent part of an answer as the whole of it.",[1855,2363,2364,2365,2326,2367,2370],{},"A call cut while the gateway reads the tenant's provider key answers ",[1870,2366,2158],{},[1870,2368,2369],{},"oz0_call_ended"," and the revocation's reason, never as a missing key: its activity tries again, the fence refuses that attempt, and the switch stops the job.",[1855,2372,2373],{},"Every edge reloads the epochs each second; in our tests the edges fenced a revocation 0.2 to 0.8 seconds after it, on both edges of a split cluster.",[1862,2375,2377],{"className":2074,"code":2376,"language":2076,"meta":1868,"style":1868},"{\"type\": \"error\", \"error\": {\"type\": \"oz0_revoked\", \"message\": \"the job's authority was revoked at epoch 4 (agent acme-triage, revocation rev-01a1…): its calls are refused at the edge\"}}\n",[1870,2378,2379],{"__ignoreMap":1868},[1873,2380,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2438,2440],{"class":1875,"line":1876},[1873,2382,2083],{"class":1895},[1873,2384,2086],{"class":1895},[1873,2386,2090],{"class":2089},[1873,2388,2086],{"class":1895},[1873,2390,2095],{"class":1895},[1873,2392,1896],{"class":1895},[1873,2394,2100],{"class":1882},[1873,2396,2086],{"class":1895},[1873,2398,2105],{"class":1895},[1873,2400,1896],{"class":1895},[1873,2402,2100],{"class":2089},[1873,2404,2086],{"class":1895},[1873,2406,2095],{"class":1895},[1873,2408,2116],{"class":1895},[1873,2410,2086],{"class":1895},[1873,2412,2090],{"class":1879},[1873,2414,2086],{"class":1895},[1873,2416,2095],{"class":1895},[1873,2418,1896],{"class":1895},[1873,2420,2329],{"class":1882},[1873,2422,2086],{"class":1895},[1873,2424,2105],{"class":1895},[1873,2426,1896],{"class":1895},[1873,2428,2138],{"class":1879},[1873,2430,2086],{"class":1895},[1873,2432,2095],{"class":1895},[1873,2434,1896],{"class":1895},[1873,2436,2437],{"class":1882},"the job's authority was revoked at epoch 4 (agent acme-triage, revocation rev-01a1…): its calls are refused at the edge",[1873,2439,2086],{"class":1895},[1873,2441,2152],{"class":1895},[1855,2443,2444,2445,2448,2449,2451,2452,2326,2454,2457,2458,2461],{},"A ",[2446,2447,2208],"strong",{}," switch holds those calls instead of refusing them, so that its jobs pause and resume rather than fail: the gateway (also for a call that names the parked agent in ",[1870,2450,2351],{},") and the token route answer ",[1870,2453,2158],{},[1870,2455,2456],{},"oz0_parked"," and ",[1870,2459,2460],{},"Retry-After",", and so do the routes a job's own steps call through the edge (filing an update, starting a candidate check, its evidence, provenance, change budget and mail, its files between tools), the workflow's next child start, tool call or session waits for the pause, and model calls already running finish.",[1855,2463,2464,2465,2467],{},"The ",[1870,2466,2158],{}," only covers the moment between an edge loading the switch and the job's pause: the activity that met it is then paused with the job, so its retries wait for the release.",[1855,2469,2470,2471,2473],{},"In our test, a job whose model calls met the park was held for 30 seconds, six times its ",[1870,2472,2460],{},", and made its calls again 7 seconds after the release, then completed.",[1862,2475,2477],{"className":2074,"code":2476,"language":2076,"meta":1868,"style":1868},"{\"type\": \"error\", \"error\": {\"type\": \"oz0_parked\", \"message\": \"kill switch kill-01a1000c-299b-778e-ac0b-fceac0eb3015 stops agent acme-triage: answers customers in a loop\"}}\n",[1870,2478,2479],{"__ignoreMap":1868},[1873,2480,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539],{"class":1875,"line":1876},[1873,2482,2083],{"class":1895},[1873,2484,2086],{"class":1895},[1873,2486,2090],{"class":2089},[1873,2488,2086],{"class":1895},[1873,2490,2095],{"class":1895},[1873,2492,1896],{"class":1895},[1873,2494,2100],{"class":1882},[1873,2496,2086],{"class":1895},[1873,2498,2105],{"class":1895},[1873,2500,1896],{"class":1895},[1873,2502,2100],{"class":2089},[1873,2504,2086],{"class":1895},[1873,2506,2095],{"class":1895},[1873,2508,2116],{"class":1895},[1873,2510,2086],{"class":1895},[1873,2512,2090],{"class":1879},[1873,2514,2086],{"class":1895},[1873,2516,2095],{"class":1895},[1873,2518,1896],{"class":1895},[1873,2520,2456],{"class":1882},[1873,2522,2086],{"class":1895},[1873,2524,2105],{"class":1895},[1873,2526,1896],{"class":1895},[1873,2528,2138],{"class":1879},[1873,2530,2086],{"class":1895},[1873,2532,2095],{"class":1895},[1873,2534,1896],{"class":1895},[1873,2536,2147],{"class":1882},[1873,2538,2086],{"class":1895},[1873,2540,2152],{"class":1895},[1855,2542,2543],{},"The fence reaches exactly the jobs the switch stops. Jobs that started under a later epoch, and jobs the switch does not reach, are not refused, however old their envelope. Releasing a park switch lifts its fence, so the parked jobs resume and call again.",[2027,2545,2547],{"id":2546},"while-the-database-does-not-answer","While the database does not answer",[1855,2549,2550,2551,2326,2553,2457,2556,2558,2559,2561],{},"The fence fails closed. When an edge cannot read a job's envelope (the database or management is slow, busy or unreachable, a stored block fails its check, or the job's start is still being recorded), it holds what the fence checks instead of letting it through unchecked: the gateway answers ",[1870,2552,2158],{},[1870,2554,2555],{},"oz0_envelope_unavailable",[1870,2557,2460],{},", the token route answers ",[1870,2560,2158],{},", and the job's next child start, tool call, session or continue-as-new waits (its workflow task is offered again).",[2027,2563,2565],{"id":2564},"jobs-whose-envelope-is-being-recorded","Jobs whose envelope is being recorded",[1855,2567,2568],{},"A job whose start names an envelope the edge cannot read yet, or whose envelope was minted in the last ten minutes and is not recorded as started yet, is one with an envelope, and waits the same way.",[1855,2570,2571],{},"An edge stores a job's envelope, and the record that the job started on it, before the start goes on, so every other edge reads it.",[1855,2573,2574],{},"With the roles apart, an edge that finds no envelope of a job asks Temporal what the job's run names before it takes the job for one without: a job whose envelope is still on its way from the edge that started it (while that edge could not reach management) waits on the other edges until it arrives, and a scheduled fire one of whose tasks ran is never given a second envelope.",[1855,2576,2577],{},"A job that started before envelopes existed has none to read and is not held, and nor is any job of a tenant with no live revocation, since nothing could reach it.",[2027,2579,2581],{"id":2580},"management-outages-with-separate-roles","Management outages with separate roles",[1855,2583,2584,2585,2588],{},"With the ",[2005,2586,2587],{"href":1359},"roles apart",", no revocation can be recorded while either of these conditions holds:",[2317,2590,2591,2594],{},[2320,2592,2593],{},"The edge gets no answer from management at all: its connection fails or nothing answers within 35 seconds. This lasts until management answers again, even if the answer says it is busy.",[2320,2595,2596],{},"Management cannot connect to its database at all. A slow or busy management or database, or one lost connection, does not count.",[1855,2598,2599],{},"During that outage, the fence lets a call continue when the edge does not hold the job's envelope, then checks the next call again. A child start, a continue-as-new, a start that continues another job's authority and a call of another plugin's tool for such a job wait for management: they would change what the job may do for good.",[1855,2601,2602,2603,2607],{},"In a tenant with ",[2005,2604,2606],{"href":2605},"\u002Fgovern\u002Ftaint-and-labels\u002Flabel-policies#models-by-level","models by level",", a model call whose envelope's labels cannot be read waits too, management away included.",[1855,2609,2610],{},"Once the database answers, the held calls go on, or are refused if a revocation reaches them.",[2027,2612,2614],{"id":2613},"new-starts-during-an-outage","New starts during an outage",[1855,2616,2617,2618,2621],{},"A start whose envelope cannot be minted or stored is refused with ",[1870,2619,2620],{},"Unavailable"," (try it again), and one whose agent's grants reach more tools and agents than one envelope holds (2,000) is refused with what to narrow.",[1855,2623,2624,2625,2628],{},"A routine's scheduled fire that cannot get its envelope waits the same way (its first task is offered again), and one that never can (its routine has no such version, or its envelope would hold too much) is stopped and audited as ",[1870,2626,2627],{},"routine.fire.refused"," with why; no job runs without an envelope for want of one.",[2027,2630,2632],{"id":2631},"reports-during-an-outage","Reports during an outage",[1855,2634,2635],{},"What a node reports for a job (its usage reports, local models' calls, a secret's refusal, an outside agent's exchange, a harness's permission question) is written with the job's agent from its envelope, never the agent the node names.",[1855,2637,2638],{},"While the edge cannot read the envelope it writes those reports without an agent rather than refuse them, since a node sends a report again only a few times and a refused one would be lost with its spend and its audit entry; it logs each one at warning level, naming the job.",[1855,2640,2641],{},"A job that runs on no envelope reports with none.",[1855,2643,2644],{},"Edges log each hold at warning level.",[1972,2646,2648],{"id":2647},"exactly-the-jobs-that-lost-their-authority","Exactly the jobs that lost their authority",[1855,2650,2651],{},"Kill switches are one kind of revocation. The others stop jobs the same way, always by cancelling them, since the authority does not come back:",[1977,2653,2654,2664],{},[1980,2655,2656],{},[1983,2657,2658,2661],{},[1986,2659,2660],{},"Revocation",[1986,2662,2663],{},"The jobs it stops",[1993,2665,2666,2674,2682,2694,2702,2713],{},[1983,2667,2668,2671],{},[1998,2669,2670],{},"A kill switch on an agent or a flow",[1998,2672,2673],{},"Jobs that run the agent anywhere in their delegation chain",[1983,2675,2676,2679],{},[1998,2677,2678],{},"A kill switch on a tenant",[1998,2680,2681],{},"Every running workflow of the tenant",[1983,2683,2684,2691],{},[1998,2685,2686,2687,2690],{},"A plugin's grant narrowed or revoked (",[1870,2688,2689],{},"oz0 plugin revoke",")",[1998,2692,2693],{},"The grantee's jobs that held what was taken away and get it by no other path now, however many tools it lost: a grant that loses more than 200 is recorded as several revocations in one batch",[1983,2695,2696,2699],{},[1998,2697,2698],{},"A plugin removed",[1998,2700,2701],{},"Jobs that run the plugin anywhere in their chain",[1983,2703,2704,2710],{},[1998,2705,2706,2707,2690],{},"An API key revoked (",[1870,2708,2709],{},"oz0 apikey revoke",[1998,2711,2712],{},"The job trees the key started",[1983,2714,2715,2718],{},[1998,2716,2717],{},"A person who can no longer start jobs in the tenant (account disabled or removed, membership removed or lowered below operator, cluster admin role taken away)",[1998,2719,2720],{},"The job trees they started. A cluster admin whose membership goes keeps a path, and nothing stops; taking their cluster role then stops their jobs",[1855,2722,2723,2724,2727],{},"Retiring an agent in the ",[2005,2725,2726],{"href":1182},"inventory"," is not a revocation: it stops new use and lets running jobs finish. A tool's switch stops no job: the nodes refuse the tool's calls.",[1855,2729,2730],{},"The edge that computes a revocation reads every running workflow of the tenant, of every type (agents' and flows' jobs, tool calls, channel posts, event deliveries), with no cap, and the envelope chain of each, and stops the jobs that match and no other.",[1855,2732,2733,2734,2737],{},"Revocations that land within a moment of each other are one ",[2308,2735,2736],{},"batch",": one epoch step and one computation.",[1855,2739,2740],{},"A job started before envelopes existed is matched by its agent for a kill, and listed as unknown for the other revocations.",[1855,2742,2743,2744,2747],{},"A job whose envelope the edge cannot read is never taken for one of those: it is matched by its agent for a kill where that reaches it, and otherwise read again a few times; one still unreadable is on the receipt as ",[1870,2745,2746],{},"indeterminate"," with why, the fence holds its calls meanwhile, and the sweep reads it again for ten minutes and stops it once it can tell.",[1855,2749,2750,2751,2754],{},"A kill switch's pass reports such a job as an enforcement failure (",[1870,2752,2753],{},"oz0 kill list"," shows it) and leaves it parked until it can tell.",[1855,2756,2757],{},"Temporal's list of running workflows shows a job a moment after it starts (seconds on a loaded cluster), so the edge also reads the edges' own record of the jobs they started from 30 seconds before the revocation on, and asks Temporal about each one the list does not show yet: a job started just before the revocation is stopped by its batch and on its receipt, whether it still runs or another path stopped it first.",[1855,2759,2760],{},"A job started earlier than that window and still absent from Temporal's visibility can be missing from the receipt. Check visibility health before treating a receipt as a complete list of affected jobs.",[1972,2762,2764],{"id":2763},"receipts","Receipts",[1855,2766,2767,2768,2772,2773,2776,2777,2457,2779,2781],{},"Each batch ends in a receipt: what it stopped, what the edges refused, and what could not be proven stopped. Management signs it with the ",[2005,2769,2771],{"href":2770},"\u002Fgovern\u002Faudit-trail\u002Fevidence-bundles#the-audit-key-and-the-gateway-keys","audit key"," once the stop completes, usually within seconds. ",[1870,2774,2775],{},"oz0 kill",", ",[1870,2778,2689],{},[1870,2780,2709],{}," print the receipt's ID:",[1862,2783,2785],{"className":1864,"code":2784,"filename":1866,"language":1867,"meta":1868,"style":1868},"oz0 receipt list\noz0 receipt show rcpt-01a12280-…\noz0 receipt show rcpt-01a12280-… --out receipt.json\noz0 receipt verify receipt.json --key \u003Cfingerprint from oz0 audit key>\n",[1870,2786,2787,2797,2809,2826],{"__ignoreMap":1868},[1873,2788,2789,2791,2794],{"class":1875,"line":1876},[1873,2790,1714],{"class":1879},[1873,2792,2793],{"class":1882}," receipt",[1873,2795,2796],{"class":1882}," list\n",[1873,2798,2799,2801,2803,2806],{"class":1875,"line":1905},[1873,2800,1714],{"class":1879},[1873,2802,2793],{"class":1882},[1873,2804,2805],{"class":1882}," show",[1873,2807,2808],{"class":1882}," rcpt-01a12280-…\n",[1873,2810,2811,2813,2815,2817,2820,2823],{"class":1875,"line":1927},[1873,2812,1714],{"class":1879},[1873,2814,2793],{"class":1882},[1873,2816,2805],{"class":1882},[1873,2818,2819],{"class":1882}," rcpt-01a12280-…",[1873,2821,2822],{"class":1882}," --out",[1873,2824,2825],{"class":1882}," receipt.json\n",[1873,2827,2828,2830,2832,2835,2838,2841,2844,2847,2850,2853,2856,2859,2863],{"class":1875,"line":1948},[1873,2829,1714],{"class":1879},[1873,2831,2793],{"class":1882},[1873,2833,2834],{"class":1882}," verify",[1873,2836,2837],{"class":1882}," receipt.json",[1873,2839,2840],{"class":1882}," --key",[1873,2842,2843],{"class":1895}," \u003C",[1873,2845,2846],{"class":1882},"fingerprint",[1873,2848,2849],{"class":1882}," from",[1873,2851,2852],{"class":1882}," oz0",[1873,2854,2855],{"class":1882}," audit",[1873,2857,2858],{"class":1882}," ke",[1873,2860,2862],{"class":2861},"sTEyZ","y",[1873,2864,2865],{"class":1895},">\n",[1862,2867,2873],{"className":2868,"code":2870,"filename":2871,"language":2872,"meta":1868},[2869],"language-text","Receipt rcpt-01a12280-… (kill) of tenant default, epoch 2: signed\n  revoked     agent helper (park)\n  signed      2026-10-10 06:35 by audit key audit-3c1f… (3c1f…)\n  computed    by edge-a: 9 running workflows read, 8 keep their authority\n  fenced      edge-a 417 ms after the revocation (0 calls in flight cut)\n  carriers    1 closed, 2 parked, 1 refused at fence, 1 indeterminate\n  CARRIER         ID           AGENT   STATE                WHY\n  approvals       -            -       parked               the waiting approvals and questions of the 1 parked jobs wait with them …\n  job             job-9eae…    helper  parked (parked)      -\n  model_calls     edge-a       -       refused_at_fence     the edge fenced the batch 417 ms after the revocation …\n  routine         nightly      helper  parked               its schedules pause while the switch holds, and its fires are refused\n  starts          -            -       refused_at_fence     StartJob, webhooks, event sources and routes, …\n","Output","text",[1870,2874,2870],{"__ignoreMap":1868},[1855,2876,2877],{},"Each carrier ends in one of four states:",[1977,2879,2880,2890],{},[1980,2881,2882],{},[1983,2883,2884,2887],{},[1986,2885,2886],{},"State",[1986,2888,2889],{},"Meaning",[1993,2891,2892,2909,2919,2929],{},[1983,2893,2894,2899],{},[1998,2895,2896],{},[1870,2897,2898],{},"closed",[1998,2900,2901,2902,2904,2905,2908],{},"It ended: a cancelled job, its waiting approvals and questions, a stream that followed it. A job to park that ended on its own before the pause reached it is ",[1870,2903,2898],{}," too, with how it ended (",[1870,2906,2907],{},"closed: failed (parked)","), and so is a job the batch reaches that had already closed when the edge read the tenant's running jobs (the fence refused its calls, or the kill switch cancelled it first), with how it closed",[1983,2910,2911,2916],{},[1998,2912,2913],{},[1870,2914,2915],{},"parked",[1998,2917,2918],{},"It is paused and runs nothing until the switch is released",[1983,2920,2921,2926],{},[1998,2922,2923],{},[1870,2924,2925],{},"refused_at_fence",[1998,2927,2928],{},"What it would do is refused at the edges: model calls and per-call tokens, new starts",[1983,2930,2931,2935],{},[1998,2932,2933],{},[1870,2934,2746],{},[1998,2936,2937,2938,2941],{},"It could not be proven stopped, with the reason: a ",[2005,2939,2940],{"href":915},"remote agent's"," session at its provider, a notification or webhook delivery already sent, a job that had not closed within 30 seconds of its cancel, an edge that had not fenced within 10 seconds",[1855,2943,2944,2947,2948,2951],{},[1870,2945,2946],{},"oz0 receipt verify"," checks the ed25519 signature over the receipt's document (every field, in its order) without the cluster or the network; pin the audit key's fingerprint you got from ",[1870,2949,2950],{},"oz0 audit key"," by another channel.",[1855,2953,2954,2955,2959],{},"The receipts whose audit entries fall in a period are also in the ",[2005,2956,2958],{"href":2957},"\u002Fgovern\u002Faudit-trail\u002Fevidence-bundles#evidence-bundles","evidence bundle",", whose verifier checks each one.",[1855,2961,2962],{},"Management signs only what it has checked: the revocations, their first time, the edge that computed the batch, its completion, every fence, the counts and the kept jobs must be the batch's as management holds it, and the document must be in its canonical form (each field once, under its own name, written the way the edge's encoder writes it, and no field the format does not have), so that every reader, in any language, sees the values that were checked.",[1855,2964,2965,2966,2969,2970,2973],{},"If management finds that the document an edge wrote is not a receipt of its own batch, it does not sign it: the receipt is ",[1870,2967,2968],{},"rejected",", with why, and ",[1870,2971,2972],{},"oz0 doctor"," names it; its jobs were stopped all the same.",[1855,2975,2976],{},"Keep the clocks of management and the edges within five minutes of each other (NTP): a receipt that an edge whose clock runs further ahead completes waits, unsigned, until management's clock catches up, and one dated more than an hour ahead is rejected, since its edge's clock is wrong.",[1855,2978,2979,2980,2983,2984,2776,2986,2776,2988,2009],{},"Reading receipts requires ",[1870,2981,2982],{},"audit.read"," (they name people and jobs); the console lists them under ",[2308,2985,1041],{},[2308,2987,1116],{},[2308,2989,2764],{},[1855,2991,2992],{},"A receipt records what the platform did. Whether that meets a law or a contract's duty to be able to stop a system is for you and your advisers to judge.",[1972,2994,2996],{"id":2995},"see-and-release","See and release",[1862,2998,3000],{"className":1864,"code":2999,"filename":1866,"language":1867,"meta":1868,"style":1868},"oz0 kill list\noz0 kill list --all          # released ones too\noz0 kill release kill-01a1000c-299b-778e-ac0b-fceac0eb3015 --reason \"fixed in 1.4.2\"\n",[1870,3001,3002,3010,3026],{"__ignoreMap":1868},[1873,3003,3004,3006,3008],{"class":1875,"line":1876},[1873,3005,1714],{"class":1879},[1873,3007,1883],{"class":1882},[1873,3009,2796],{"class":1882},[1873,3011,3012,3014,3016,3019,3022],{"class":1875,"line":1905},[1873,3013,1714],{"class":1879},[1873,3015,1883],{"class":1882},[1873,3017,3018],{"class":1882}," list",[1873,3020,3021],{"class":1882}," --all",[1873,3023,3025],{"class":3024},"sHwdD","          # released ones too\n",[1873,3027,3028,3030,3032,3035,3038,3040,3042,3045],{"class":1875,"line":1927},[1873,3029,1714],{"class":1879},[1873,3031,1883],{"class":1882},[1873,3033,3034],{"class":1882}," release",[1873,3036,3037],{"class":1882}," kill-01a1000c-299b-778e-ac0b-fceac0eb3015",[1873,3039,1892],{"class":1882},[1873,3041,1896],{"class":1895},[1873,3043,3044],{"class":1882},"fixed in 1.4.2",[1873,3046,1902],{"class":1895},[1862,3048,3051],{"className":3049,"code":3050,"filename":2871,"language":2872,"meta":1868},[2869],"ID                                         TENANT   STOPS         MODE  SINCE             BY              JOBS  REASON\nkill-01a1000c-299b-778e-ac0b-fceac0eb3015  default  agent helper  park  2026-10-03 06:35  operator:admin  1     answers customers in a loop\n",[1870,3052,3050],{"__ignoreMap":1868},[1855,3054,3055,3058,3059,3062],{},[1870,3056,3057],{},"JOBS"," is how many running jobs the switch paused or cancelled. Setting a switch that already holds returns that one. When an edge cannot pause or cancel some of the jobs (an external Temporal without workflow pause, say), the switch says so, in ",[1870,3060,3061],{},"kill list"," and on the console, until the edge succeeds:",[1862,3064,3067],{"className":3065,"code":3066,"filename":2871,"language":2872,"meta":1868},[2869],"WARNING: kill-01a1000c-299b-778e-ac0b-fceac0eb3015 does not hold for every running job yet (2026-10-03 06:35): park job job-9eae…: …\n",[1870,3068,3066],{"__ignoreMap":1868},[1855,3070,3071],{},"The reason is at most 500 characters; keep the rest in your incident notes.",[1855,3073,3074,3075,3078,3079,3082,3083,3087,3088,3091,3092,2776,3095,2776,3098,3101,3102,2457,3105,3108,3109,3112,3113,3116],{},"Setting and releasing take a reason (",[1870,3076,3077],{},"--reason",", and optionally ",[1870,3080,3081],{},"--decision-ref","), which the entry keeps. Setting a switch applies at once; in a tenant with ",[2005,3084,3086],{"href":3085},"\u002Fgovern\u002Freviewed-changes#four-eyes-for-governance-changes","four eyes"," on, releasing one waits for another admin, and the switch holds until then. Setting, enforcing and releasing are in the ",[2005,3089,3090],{"href":1186},"audit trail"," as ",[1870,3093,3094],{},"kill.set",[1870,3096,3097],{},"kill.mode",[1870,3099,3100],{},"kill.enforced"," (with the jobs), ",[1870,3103,3104],{},"kill.release",[1870,3106,3107],{},"kill.resumed",", and each batch's signed receipt as ",[1870,3110,3111],{},"kill.receipt"," (",[1870,3114,3115],{},"revoke.receipt"," for the other revocations).",[1855,3118,3119,3120,2009],{},"Setting and releasing need the tenant's admin role; readers can list them. A switch a cluster admin set, during an incident or for abuse, only a cluster admin can release or change: the tenant's admins see it marked ",[1870,3121,3122],{},"(cluster)",[1855,3124,3125,3126,3129,3130,3133,3134,3136,3137,3139],{},"The console has them under ",[2446,3127,3128],{},"Govern › Kill switches",": ",[2446,3131,3132],{},"Active"," lists what is stopped and, for those who may change governance, stops and releases with a reason; ",[2446,3135,2764],{}," has the signed receipt of each, for those who read the audit log. The ",[2005,3138,2726],{"href":1182}," marks what is stopped.",[1972,3141,3143],{"id":3142},"link-a-switch-to-an-incident","Link a switch to an incident",[1855,3145,3146,3147,3150],{},"A switch set because something went wrong belongs in the ",[2005,3148,3149],{"href":1177},"incident"," that records it, with the jobs it parked or cancelled:",[1862,3152,3154],{"className":1864,"code":3153,"filename":1866,"language":1867,"meta":1868,"style":1868},"oz0 incident link inc-01a1300e-53f3-7dbc-bf41-c7f700105376 kill kill-01a1000c-299b-778e-ac0b-fceac0eb3015 --reason \"the switch that stopped it\"\n",[1870,3155,3156],{"__ignoreMap":1868},[1873,3157,3158,3160,3163,3166,3169,3171,3173,3175,3177,3180],{"class":1875,"line":1876},[1873,3159,1714],{"class":1879},[1873,3161,3162],{"class":1882}," incident",[1873,3164,3165],{"class":1882}," link",[1873,3167,3168],{"class":1882}," inc-01a1300e-53f3-7dbc-bf41-c7f700105376",[1873,3170,1883],{"class":1882},[1873,3172,3037],{"class":1882},[1873,3174,1892],{"class":1882},[1873,3176,1896],{"class":1895},[1873,3178,3179],{"class":1882},"the switch that stopped it",[1873,3181,1902],{"class":1895},[1855,3183,3184,3185,2776,3187,3189,3190,3193],{},"The incident keeps the switch's time and a summary (what it stops, its mode, who set and released it), and its timeline export carries the switch's audit entries (",[1870,3186,3094],{},[1870,3188,3104],{}," and the rest) so they verify offline. A receipt of the kill links the same way (",[1870,3191,3192],{},"oz0 incident link \u003Cid> receipt \u003Crcpt-…>",").",[3195,3196,3197],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":1868,"searchDepth":1905,"depth":1905,"links":3199},[3200,3203,3208,3215,3216,3217,3218],{"id":1974,"depth":1905,"text":1975,"children":3201},[3202],{"id":2029,"depth":1927,"text":2030},{"id":2192,"depth":1905,"text":2193,"children":3204},[3205,3206,3207],{"id":2202,"depth":1927,"text":2203},{"id":2234,"depth":1927,"text":2235},{"id":2285,"depth":1927,"text":2286},{"id":2302,"depth":1905,"text":2303,"children":3209},[3210,3211,3212,3213,3214],{"id":2546,"depth":1927,"text":2547},{"id":2564,"depth":1927,"text":2565},{"id":2580,"depth":1927,"text":2581},{"id":2613,"depth":1927,"text":2614},{"id":2631,"depth":1927,"text":2632},{"id":2647,"depth":1905,"text":2648},{"id":2763,"depth":1905,"text":2764},{"id":2995,"depth":1905,"text":2996},{"id":3142,"depth":1905,"text":3143},"Stop one agent, one tool or a whole tenant on every edge and node within seconds, and start it again.","md",null,{"audience":3223,"doc_type":3224},"tenant admins and governance reviewers","how-to",{"icon":1119},{"title":1116,"description":3219},"XWffrYbb_WlpCAVMn9pW3pZ4Wh9k1_Mtc-PZBIOnV5w",[3229,3231],{"title":1112,"path":1113,"stem":1114,"description":3230,"icon":666,"children":-1},"Identify agent-written messages on supported console, chat and connector surfaces, in your tenant's words.",{"title":1121,"path":1122,"stem":1123,"description":3232,"icon":1126,"children":-1},"Start a job for one or more people, find what you hold about them, give them a readable copy, restrict or stop processing at their request, keep a contestable record of decisions about them, keep what a law asks you to keep, and erase the rest by destroying keys.",1794442946568]