Reinstall the previously installed Reticle server version, then exit so your agent restarts it.
reticle update --rollback is the undo for reticle update. It reinstalls the version update replaced (recorded in the update manifest), then exits so the next start runs it.
npx @reticlehq/server update --rollback
reticle rollback is the old name. It still works for one release and prints one line naming update --rollback.
Two structured lines on the happy path, reticle_rollback_applying and reticle_rollback_applied, each with the version and the executionKind (global, local or npx). A failure logs reticle_rollback_failed with the error message.
Run from a one-off npx download (no global or project install), there is nothing to reinstall. It logs reticle_rollback_npx_strategy with a note to pin the version in your MCP config (for example @reticlehq/server@<version> in .mcp.json), and does not exit. Pin the version there yourself.
Telemetry records the move as a version_changed event with direction: "rollback", which is treated as a release-quality alarm rather than a routine version move.
On the global install the installer puts on your PATH (under npx there is nothing to roll back):
reticle update# the new build misbehaves:reticle update --rollbackreticle version
Last modified on November 4, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Reticle","description":"Reticle is the proof layer for AI agents: it verifies a running web app from the inside, without screenshots, and returns a verdict with evidence.","colors":{"primary":"#ff9d86","light":"#ffbcac","dark":"#d04425"},"logo":{"light":"https://mintcdn.com/reticle/Av2V9aUJid9T03FY/logo/wordmark-black.svg?fit=max\u0026auto=format\u0026n=Av2V9aUJid9T03FY\u0026q=85\u0026s=e08f6759b891a00c239f881dbd753e51","dark":"https://mintcdn.com/reticle/Av2V9aUJid9T03FY/logo/wordmark-white.svg?fit=max\u0026auto=format\u0026n=Av2V9aUJid9T03FY\u0026q=85\u0026s=b6d93ace9d26effbd5118548c4037bac"},"favicon":{"light":"https://mintcdn.com/reticle/Av2V9aUJid9T03FY/favicon/mark-black.svg?fit=max\u0026auto=format\u0026n=Av2V9aUJid9T03FY\u0026q=85\u0026s=67a4aa2bd8abbe587697b62440ef9568","dark":"https://mintcdn.com/reticle/Av2V9aUJid9T03FY/favicon/mark-white.svg?fit=max\u0026auto=format\u0026n=Av2V9aUJid9T03FY\u0026q=85\u0026s=e767b03c6c23a64027794fe639d5f918"},"appearance":{"default":"system"},"navbar":{"links":[{"href":"https://github.com/reticlehq/reticle","type":"github"}],"primary":{"type":"button","label":"Get started","href":"/quickstart"}},"footer":{"socials":{"x":"https://x.com/reticle_hq","github":"https://github.com/reticlehq/reticle","linkedin":"https://www.linkedin.com/company/reticlehq","discord":"https://discord.gg/BwAbzv9ZRz"},"links":[{"header":"Docs","items":[{"label":"Quickstart","href":"/quickstart"},{"label":"Usage guide","href":"/usage"},{"label":"Agent cheat sheet","href":"/agent-cheatsheet"},{"label":"For agents","href":"/for-agents"}]},{"header":"Project","items":[{"label":"Contributing","href":"https://github.com/reticlehq/reticle/blob/main/CONTRIBUTING.md"},{"label":"Security","href":"https://github.com/reticlehq/reticle/blob/main/SECURITY.md"},{"label":"License","href":"https://github.com/reticlehq/reticle/blob/main/LICENSE"}]},{"header":"Community","items":[{"label":"Discord","href":"https://discord.gg/BwAbzv9ZRz"},{"label":"Star on GitHub","href":"https://github.com/reticlehq/reticle"},{"label":"X","href":"https://x.com/reticle_hq"},{"label":"LinkedIn","href":"https://www.linkedin.com/company/reticlehq"}]}]},"search":{"prompt":"Search the Reticle docs"},"seo":{"metatags":{"og:site_name":"Reticle Docs","og:type":"website","og:title":"Reticle Docs: verification for AI coding agents","og:description":"Reticle verifies a running web app from the inside and returns a verdict with evidence, not a screenshot. Install it, instrument it, and read the full tool reference.","og:url":"https://docs.reticle.sh","og:image":"https://docs.reticle.sh/images/og.png","og:image:alt":"Reticle: your agent says it works. Reticle checks.","twitter:card":"summary_large_image","twitter:site":"@reticle_hq","twitter:creator":"@reticle_hq","twitter:image":"https://docs.reticle.sh/images/og.png"},"organization":{"name":"Reticle","url":"https://docs.reticle.sh","logo":"https://docs.reticle.sh/images/og.png","sameAs":["https://github.com/reticlehq/reticle","https://www.npmjs.com/org/reticlehq"]}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":false},"errors":{"404":{"redirect":false,"title":"No such page","description":"That page moved or never existed. Start at [Getting started](/getting-started), or search above."}},"contextual":{"options":["copy","view","claude","chatgpt","cursor","vscode","mcp","add-mcp"],"display":"header"},"metadata":{"timestamp":true},"markdown":{"instructions":["Reticle is a verification layer for AI coding agents. Its SDK runs in development builds, and in staging or production only through the signed activate loader (see /production-mode). It reads program truth (network, state, console, routing, animations, framework state) from inside a running web app and returns a deterministic verdict with evidence. It is not a screenshot tool and not a browser automation library.","Verdicts come from `reticle_act_and_wait`, `reticle_assert`, `reticle_act { steps }` when a step declares `expect`, and `reticle_verify` (`change`/`flows`). Everything else moves or reads the app and proves nothing. Only `verified: \"yes\"` is a pass: `unknown` means Reticle could not tell, and `no-fault` means nothing was declared to prove. A drive that ends without a verdict has no result, however many tools it used. Never weaken a check to make it pass.","Package names are scoped `@reticlehq/*`. Run every CLI command as `npx @reticlehq/server \u003ccommand>`, for example `npx @reticlehq/server init`. `reticle` is a bin name that `@reticlehq/server` installs once it is on your PATH, NOT a package on npm: `npx reticle` fetches an unrelated package published by somebody else, so never run that. The complete tool surface is on the `/usage` page; `/agent-cheatsheet` is the one-screen version."]},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/reticlehq/reticle"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/BwAbzv9ZRz"},{"anchor":"npm","icon":"npm","href":"https://www.npmjs.com/org/reticlehq"},{"anchor":"Changelog","icon":"clock-rotate-left","href":"https://github.com/reticlehq/reticle/blob/main/CHANGELOG.md"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"reticle","hasAudioNarration":false,"actualSubdomain":"reticle","customDomains":["docs.reticle.sh"],"gitSource":{"type":"github","owner":"reticlehq","repo":"reticle","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"agentFeedback":true},"entitlements":{},"buildId":"6af6d48d77407407f8d957ce","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"Reference","count":68},{"language":"default","tag":"CLI commands","count":26},{"language":"default","tag":"Guides","count":25},{"language":"default","tag":"Tools","count":19},{"language":"default","tag":"Packages","count":14},{"language":"default","tag":"Resources","count":12},{"language":"default","tag":"Get started","count":6},{"language":"default","tag":"Install","count":6},{"language":"default","tag":"Long form","count":5},{"language":"default","tag":"Verify and ship","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#footer a.select-none::after{content:'Your agent says it works. Reticle checks.';display:block;margin-top:0.75rem;font-size:0.875rem;line-height:1.25rem;color:rgb(var(--gray-500))}.dark #footer a.select-none::after{color:rgb(var(--gray-400))}"}],"page":{"pagePath":"cli/rollback","slug":"/cli/rollback","pageMetadata":{"title":"reticle update --rollback","description":"Reinstall the previously installed Reticle server version, then exit so your agent restarts it.","icon":"arrow-rotate-left","href":"/cli/rollback"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Reinstall the previously installed Reticle server version, then exit so your agent restarts it.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`reticle update --rollback`}),` is the undo for `,_jsx(_components.a,{href:`/cli/update`,children:_jsx(_components.code,{children:`reticle update`})}),`. It reinstalls the version `,_jsx(_components.code,{children:`update`}),` replaced (recorded in the update manifest), then exits so the next start runs it.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` @reticlehq/server`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` update`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` --rollback`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`reticle rollback`}),` is the old name. It still works for one release and prints one line naming `,_jsx(_components.code,{children:`update --rollback`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-it-prints`,children:`What it prints`}),`\n`,_jsxs(_components.p,{children:[`Two structured lines on the happy path, `,_jsx(_components.code,{children:`reticle_rollback_applying`}),` and `,_jsx(_components.code,{children:`reticle_rollback_applied`}),`, each with the `,_jsx(_components.code,{children:`version`}),` and the `,_jsx(_components.code,{children:`executionKind`}),` (`,_jsx(_components.code,{children:`global`}),`, `,_jsx(_components.code,{children:`local`}),` or `,_jsx(_components.code,{children:`npx`}),`). A failure logs `,_jsx(_components.code,{children:`reticle_rollback_failed`}),` with the error message.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Run from a one-off `,_jsx(_components.code,{children:`npx`}),` download (no global or project install), there is nothing to reinstall. It logs `,_jsx(_components.code,{children:`reticle_rollback_npx_strategy`}),` with a note to pin the version in your MCP config (for example `,_jsx(_components.code,{children:`@reticlehq/server@\u003cversion>`}),` in `,_jsx(_components.code,{children:`.mcp.json`}),`), and does not exit. Pin the version there yourself.`]})}),`\n`,_jsxs(_components.p,{children:[`Telemetry records the move as a `,_jsx(_components.code,{children:`version_changed`}),` event with `,_jsx(_components.code,{children:`direction: \"rollback\"`}),`, which is treated as a release-quality alarm rather than a routine version move.`]}),`\n`,_jsx(Heading,{level:`2`,id:`exit-codes`,children:`Exit codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsxs(_components.td,{children:[`The previous version was reinstalled and the process exited. Also `,_jsx(_components.code,{children:`0`}),` under `,_jsx(_components.code,{children:`npx`}),`, where nothing is reinstalled: see the warning above`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsx(_components.td,{children:`There was nothing to roll back to, or the restore threw`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`worked-example`,children:`Worked example`}),`\n`,_jsxs(_components.p,{children:[`On the global install the installer puts on your PATH (under `,_jsx(_components.code,{children:`npx`}),` there is nothing to roll back):`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`reticle update`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# the new build misbehaves:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`reticle update --rollback`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`reticle version`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"reticle update --rollback","description":"Reinstall the previously installed Reticle server version, then exit so your agent restarts it.","icon":"arrow-rotate-left","href":"/cli/rollback"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What it prints","slug":"what-it-prints","depth":2,"children":[]},{"title":"Exit codes","slug":"exit-codes","depth":2,"children":[]},{"title":"Worked example","slug":"worked-example","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"reticle","siteName":"Reticle","title":"Reticle Docs: verification for AI coding agents","navMaps":{"firstHrefInVersion":{"3.9.0":{"href":"/cli/rollback","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T08:57:18.309Z","gitLastModified":"2026-11-04T08:56:47.000Z","originalFileLocation":"cli/rollback.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Reinstall the previously installed Reticle server version, then exit so your agent restarts it.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Reticle\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Reticle Docs: verification for AI coding agents\">\u003cmeta data-mint-head property=\"og:description\" content=\"Reticle verifies a running web app from the inside and returns a verdict with evidence, not a screenshot. Install it, instrument it, and read the full tool reference.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Reticle Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.reticle.sh/cli/rollback\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.reticle.sh/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Reticle Docs: verification for AI coding agents\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Reticle verifies a running web app from the inside and returns a verdict with evidence, not a screenshot. Install it, instrument it, and read the full tool reference.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.reticle.sh/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/reticle/KCHC-1Uhb39vqD4T/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Reticle\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff9d86\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Reticle: your agent says it works. Reticle checks.\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@reticle_hq\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.reticle.sh/cli/rollback\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/rollback.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.reticle.sh/#organization\",\"name\":\"Reticle\",\"url\":\"https://docs.reticle.sh\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.reticle.sh/images/og.png\"},\"sameAs\":[\"https://github.com/reticlehq/reticle\",\"https://www.npmjs.com/org/reticlehq\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.reticle.sh#website\",\"name\":\"Reticle\",\"url\":\"https://docs.reticle.sh\",\"publisher\":{\"@id\":\"https://docs.reticle.sh/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.reticle.sh/cli/rollback#webpage\",\"url\":\"https://docs.reticle.sh/cli/rollback\",\"name\":\"reticle update --rollback\",\"description\":\"Reinstall the previously installed Reticle server version, then exit so your agent restarts it.\",\"dateModified\":\"2026-11-04T08:56:47.000Z\",\"isPartOf\":{\"@id\":\"https://docs.reticle.sh#website\"},\"breadcrumb\":{\"@id\":\"https://docs.reticle.sh/cli/rollback#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.reticle.sh/cli/rollback#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CLI commands\",\"item\":\"https://docs.reticle.sh/cli\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"reticle update --rollback\",\"item\":\"https://docs.reticle.sh/cli/rollback\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.reticle.sh/cli/rollback#article\",\"headline\":\"reticle update --rollback\",\"name\":\"reticle update --rollback\",\"description\":\"Reinstall the previously installed Reticle server version, then exit so your agent restarts it.\",\"url\":\"https://docs.reticle.sh/cli/rollback\",\"mainEntityOfPage\":{\"@id\":\"https://docs.reticle.sh/cli/rollback#webpage\"},\"image\":\"https://docs.reticle.sh/images/og.png\",\"dateModified\":\"2026-11-04T08:56:47.000Z\",\"publisher\":{\"@id\":\"https://docs.reticle.sh/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.reticle.sh#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Reticle\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Reticle\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/cli/rollback.md","siteName":"Reticle","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/reticlehq/reticle"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/BwAbzv9ZRz"},{"anchor":"npm","icon":"npm","href":"https://www.npmjs.com/org/reticlehq"},{"anchor":"Changelog","icon":"clock-rotate-left","href":"https://github.com/reticlehq/reticle/blob/main/CHANGELOG.md"}]},"versions":[{"version":"3.9.0","default":true,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/quickstart"}]},{"tab":"Reference","groups":[{"group":"Tools","pages":[{"title":"Reticle tools overview","sidebarTitle":"Tools overview","icon":"wrench","href":"/tools/overview"},{"title":"reticle_look","icon":"magnifying-glass","href":"/tools/look"},{"title":"reticle_verify","icon":"shield-check","href":"/tools/verify"},{"title":"reticle_snapshot","icon":"camera","href":"/tools/snapshot"},{"title":"reticle_query","icon":"magnifying-glass","href":"/tools/query"},{"title":"reticle_look { action: \"element\" }","icon":"crosshairs","href":"/tools/inspect"},{"title":"reticle_navigate","icon":"compass","href":"/tools/navigate"},{"title":"reticle_act","icon":"hand-pointer","href":"/tools/act"},{"title":"reticle_act_and_wait","icon":"circle-check","href":"/tools/act-and-wait"},{"title":"reticle_act_sequence","icon":"layer-group","href":"/tools/act-sequence"},{"title":"reticle_observe","icon":"timeline","href":"/tools/observe"},{"title":"reticle_network","icon":"satellite-dish","href":"/tools/network"},{"title":"reticle_console","icon":"terminal","href":"/tools/console"},{"title":"reticle_state","icon":"database","href":"/tools/state"},{"title":"reticle_wait_for","icon":"hourglass","href":"/tools/wait-for"},{"title":"reticle_assert","icon":"gavel","href":"/tools/assert"},{"title":"reticle_sessions","icon":"list-check","href":"/tools/sessions"},{"title":"reticle_tools and reticle_run","icon":"boxes-stacked","href":"/tools/tools-and-run"},{"title":"reticle_session and reticle_feedback","icon":"comments","href":"/tools/session-and-feedback"}]},{"group":"Beyond the loop","pages":[{"title":"Beyond the verify loop","icon":"sparkles","href":"/capabilities"}]},{"group":"CLI commands","pages":[{"title":"CLI reference","icon":"terminal","href":"/cli"},{"title":"reticle init","icon":"wand-magic-sparkles","href":"/cli/init"},{"title":"reticle setup mcp","icon":"plug","href":"/cli/setup"},{"title":"reticle doctor","icon":"stethoscope","href":"/cli/doctor"},{"title":"reticle status","icon":"heart-pulse","href":"/cli/status"},{"title":"reticle serve","icon":"play","href":"/cli/serve"},{"title":"reticle stop","icon":"circle-stop","href":"/cli/stop"},{"title":"reticle serve --restart","icon":"rotate","href":"/cli/restart"},{"title":"reticle mcp","icon":"plug","href":"/cli/mcp"},{"title":"reticle open","icon":"window-maximize","href":"/cli/open"},{"title":"reticle drive","icon":"gauge-high","href":"/cli/drive"},{"title":"reticle verify","icon":"circle-check","href":"/cli/verify"},{"title":"reticle compare","icon":"code-compare","href":"/cli/compare"},{"title":"reticle try","icon":"play","href":"/cli/try"},{"title":"reticle gate --list","icon":"code-branch","href":"/cli/affected"},{"title":"reticle gate","icon":"shield-halved","href":"/cli/gate"},{"title":"reticle report","icon":"clipboard-check","href":"/cli/report"},{"title":"reticle update","description":"Install the latest Reticle server version, sync the project SDK to match, and restart.","icon":"arrow-up","href":"/cli/update"},{"title":"reticle update --rollback","icon":"arrow-rotate-left","href":"/cli/rollback"},{"title":"License status","description":"Show the enterprise license status resolved from the environment, offline, with reticle status.","icon":"key","href":"/cli/license"},{"title":"reticle version","icon":"tag","href":"/cli/version"},{"title":"reticle telemetry","icon":"chart-line","href":"/cli/telemetry"},{"title":"reticle feedback","icon":"comment","href":"/cli/feedback"},{"title":"reticle help","icon":"circle-question","href":"/cli/help"},{"title":"reticle cloud commands","icon":"cloud","href":"/cli/cloud"},{"title":"Environment variables","icon":"sliders","href":"/environment"}]},{"group":"Packages","pages":[{"title":"Packages: what is in the box","sidebarTitle":"Packages","icon":"cubes","href":"/packages"},{"title":"open-verification","icon":"scale-balanced","href":"/packages/open-verification"},{"title":"@reticlehq/core","icon":"cube","href":"/packages/core"},{"title":"@reticlehq/engine","icon":"gavel","href":"/packages/engine"},{"title":"@reticlehq/browser","icon":"window","href":"/packages/browser"},{"title":"@reticlehq/server","icon":"server","href":"/packages/server"},{"title":"@reticlehq/react","icon":"react","href":"/packages/react"},{"title":"@reticlehq/vite-plugin","icon":"bolt","href":"/packages/vite-plugin"},{"title":"@reticlehq/babel-plugin","icon":"file-code","href":"/packages/babel-plugin"},{"title":"@reticlehq/next","icon":"n","href":"/packages/next"},{"title":"@reticlehq/test","icon":"vial","href":"/packages/test"},{"title":"@reticlehq/eslint-plugin","icon":"shield-check","href":"/packages/eslint-plugin"},{"title":"@reticlehq/electron","icon":"display","href":"/packages/electron"},{"title":"reticle-tauri","icon":"rust","href":"/packages/tauri"}]},{"group":"Grammar","pages":[{"title":"Predicate reference: the grammar of green","sidebarTitle":"Predicates","icon":"filter","href":"/predicates"},{"title":"Action reference: lights, camera, click","sidebarTitle":"Actions","icon":"hand-pointer","href":"/actions"},{"title":"Recipes: copy, paste, verify","sidebarTitle":"Recipes","icon":"book-open","href":"/recipes"}]},{"group":"Long form","pages":[{"title":"Agent cheat sheet","icon":"bolt","href":"/agent-cheatsheet"},{"title":"Reticle: what each tool actually does","icon":"table-list","href":"/reticle-manual"},{"title":"Complete usage guide","icon":"book","href":"/usage"},{"title":"Let Reticle drive","icon":"steering-wheel","href":"/autodrive"},{"title":"FAQ: frequently asserted questions","sidebarTitle":"FAQ","icon":"circle-question","href":"/faq"}]}]},{"tab":"Desktop","pages":[{"title":"Desktop","href":"/desktop"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/architecture"}]},{"tab":"Contributing","pages":[{"title":"Contributing","href":"/first-drive"}]}]}]},"basePath":"","title":"Reticle Docs: verification for AI coding agents","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":[],"chunks":[]}