A bare memloom reconcileacts. --dry-run is the preview.
Which passes run comes from your saved settings, so a bare run is the two free passes unless you
turned others on. A dry run reports everything, changes nothing, and never calls a model however
your settings are set, so it is always free.
reconcile (dry run)scanned 412 active memorieswould retire 2: 9f3c1a04 identical content to 41b0e2d8, which is older and stays active c7d5e910 41b0e2d8 replaced this belief but it is still currententities: would fold 3 name variants (certain) 4 uncertain pairs would go to the conflicts tab412 memories are due a contradiction re-check re-checking all of them is about $1.45 one run takes the 200 that have waited longestno memory was changed. this run is logged as 0f2c7b18-...
The last line always names the run, so undoing one never means looking the id up.
A price is only shown for a model whose rates memloom knows. Anything else prints tokens and no
dollar figure, rather than a confident wrong number.
A run with the contradiction re-check on can take a while, and the CLI waits for it.
Watch it live in the viewer’s Settings tab if you want per-belief progress. Only one applying run
at a time; a second is refused while the first is live.
3 unconfirmed contradictions. a second check stood behind each one, but read both quotes before answering.similarity 71%, judged by google/gemini-2.5-flash NEW: the release is scheduled for the 14th EXISTING: the release is deferred until the extractor work lands why: deferred then scheduled id: 8a41c0e2-...
Both quotes were verified against the two memories when the finding was written, so they are the
whole question. Reading them beats opening two beliefs and comparing.Every finding also gets a second opinion: the model looks at that one pair on its own and decides
whether the two can both be true. Only findings it stands behind are listed. The ones it rejects
are recorded as dismissed, so that pair is never raised again. Findings from before this check
existed get it on the next run with llm_recheck on.
memloom reconcile yes <id> # confirm: creates a real conflict to resolvememloom reconcile no <id> # dismiss: that pair is never raised again
The id comes from reconcile possible, not a run id. An id already answered, or one whose
memories the store has moved on from, prints a pointer back to the list rather than an error.
A rejection is not waste. It records what you do not consider a contradiction.
Whatever the run already checked stays checked, so stopping costs nothing beyond the calls already
paid for and the next run resumes there.This also works on a run whose daemon died mid-sweep. That is the only way such a row stops
counting as live, and until it does a new applying run is refused.
restored 4 memories, unfolded 2 entities, skipped 1 the store moved on from
What the run did
What undo does
Retired a memory
Restores it, only while still stale and nothing else staled it since
Folded an entity
Returns it with its original id and vector
Raised a conflict nobody answered
Takes it back out of the queue
Raised a conflict you answered
Leaves it, counted as skipped. Your answer outranks the undo
Possible contradictions are findings rather than changes, so undo leaves them. Undoing twice does
nothing the second time. The viewer’s Console tab has undo and stop next to the run history.
Look for contradictions the save path could not see
up to 200 calls per run
startupCatchUp
Free passes on startup when the last run is over 36 hours old
free
The CLI prints them and does not change them. Toggle in the viewer’s Settings tab or with
POST /memory/reconcile/settings. They live in the store, not config.env, so a change needs no
restart.
RECONCILE_ENABLED=0 is a separate kill switch. It refuses any run that was asked to act and
stops automatic runs, leaving previews working. See Configuration.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"memloom docs","colors":{"primary":"#1f62d6","light":"#3b82f6","dark":"#1d5bc8"},"api":{"params":{"expanded":"all"},"playground":{"display":"simple"},"examples":{"defaults":"required","languages":["curl","python","javascript","go","php","ruby","java","csharp"],"prefill":true,"autogenerate":true}},"background":{"color":{"light":"#e6e7ea","dark":"#0c0d0f"}},"navbar":{"links":[{"href":"https://memloom.dev","label":"Website"}]},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"versuno-663ee29a","hasAudioNarration":false,"actualSubdomain":"versuno-663ee29a","customDomains":["docs.memloom.dev"],"gitSource":{"type":"github","owner":"memloom","repo":"memloom","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af08f3ab63e2f3c3ce2e39e","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API Reference","count":89},{"language":"default","tag":"Endpoints","count":89},{"language":"default","tag":"Documentation","count":22},{"language":"default","tag":"Schema \u0026 entities","count":18},{"language":"default","tag":"Context","count":13},{"language":"default","tag":"MCP Reference","count":11},{"language":"default","tag":"Memory","count":11},{"language":"default","tag":"Indexing \u0026 graph","count":11},{"language":"default","tag":"CLI Reference","count":10},{"language":"default","tag":"Concepts","count":10}]},"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":"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":"llms-txt-v2","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":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--ipod-select-bg: linear-gradient(180deg, #5b9dff 0%, #2f74ea 48%, #1f62d6 52%, #1d5bc8 100%);--ipod-select-border: #174fb3;--ipod-metal: linear-gradient(180deg, #fbfbfc 0%, #e4e6e9 55%, #cfd2d6 100%);--ipod-metal-grain: repeating-linear-gradient(\n 0deg,\n rgb(255 255 255 / 22%) 0 1px,\n rgb(0 0 0 / 2.5%) 1px 2px,\n transparent 2px 3px\n );--ipod-metal-edge: rgb(255 255 255 / 85%);--ipod-border: #c4c7cc;--ipod-raised: #f4f5f6;--ipod-field: #fbfbfc}html.dark{--ipod-select-border: #1650b8;--ipod-metal: linear-gradient(180deg, #24262a 0%, #17181b 100%);--ipod-metal-grain: none;--ipod-metal-edge: rgb(255 255 255 / 6%);--ipod-border: #25272b;--ipod-raised: #16171a;--ipod-field: #0f1012}#navbar{background:var(--ipod-metal-grain), var(--ipod-metal);box-shadow:inset 0 1px 0 var(--ipod-metal-edge);border-bottom:1px solid var(--ipod-border)}#sidebar-content li[data-active]>a{background:var(--ipod-select-bg)!important;color:#fff!important;border-radius:5px;box-shadow:inset 0 1px 0 rgb(255 255 255 / 30%);text-shadow:0 -1px 0 rgb(0 0 0 / 25%)}#sidebar-content li[data-active]>a *{color:#fff!important}#sidebar-content li[data-active]>a svg{background-color:#fff!important}#sidebar-content li:not([data-active])>a:hover{border-radius:5px}.nav-tabs-item[data-active]{height:28px;align-self:center;padding:0 10px;background:var(--ipod-select-bg);border-radius:5px;box-shadow:inset 0 1px 0 rgb(255 255 255 / 35%),\n 0 0 0 1px var(--ipod-select-border);color:#fff!important;text-shadow:0 -1px 0 rgb(0 0 0 / 25%)}.nav-tabs-item[data-active] *{color:#fff!important}.nav-tabs-item[data-active]>div.absolute{display:none}#search-bar-entry,#search-bar-entry-mobile{background:var(--ipod-field);border:1px solid var(--ipod-border);border-radius:5px}.card{background:var(--ipod-raised);border-color:var(--ipod-border);border-radius:8px;box-shadow:inset 0 1px 0 var(--ipod-metal-edge),\n 0 1px 2px rgb(0 0 0 / 12%)}.callout{border-radius:8px}.code-block,pre{border-radius:8px}.toc-item[data-active-deepest] a{color:#1f62d6;font-weight:600}html.dark .toc-item[data-active-deepest] a{color:#60a5fa}"}],"page":{"pagePath":"cli/reconcile","slug":"/cli/reconcile","pageMetadata":{"title":"Reconciliation","description":"reconcile and its subcommands: the pass, its findings, and how to take a run back","icon":"rotate","href":"/cli/reconcile"},"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: \"reconcile and its subcommands: the pass, its findings, and how to take a run back\"\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`,hr:`hr`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`reconcile [--dry-run]`})}),_jsx(_components.td,{children:`Run the pass, or preview it`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`reconcile possible`})}),_jsx(_components.td,{children:`List the unconfirmed contradictions it found`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`reconcile yes \u003cid>`}),` / `,_jsx(_components.code,{children:`no \u003cid>`})]}),_jsx(_components.td,{children:`Confirm one into a conflict, or dismiss it for good`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`reconcile stop \u003crun id>`})}),_jsx(_components.td,{children:`End a run that is still going`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`reconcile undo \u003crun id>`})}),_jsx(_components.td,{children:`Put back exactly what one run did`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`reconcile settings`})}),_jsx(_components.td,{children:`Print which passes are on`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`What each pass does and when a run happens on its own is in\n`,_jsx(_components.a,{href:`/concepts/reconciliation`,children:`Reconciliation`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`reconcile`,children:`reconcile`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile [--dry-run]`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`A bare `,_jsx(_components.code,{children:`memloom reconcile`}),` `,_jsx(_components.strong,{children:`acts`}),`. `,_jsx(_components.code,{children:`--dry-run`}),` is the preview.`]})}),`\n`,_jsx(_components.p,{children:`Which passes run comes from your saved settings, so a bare run is the two free passes unless you\nturned others on. A dry run reports everything, changes nothing, and never calls a model however\nyour settings are set, so it is always free.`}),`\n`,_jsx(CodeBlock,{numberOfLines:`17`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`reconcile (dry run)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`scanned 412 active memories`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`would retire 2:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 9f3c1a04 identical content to 41b0e2d8, which is older and stays active`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` c7d5e910 41b0e2d8 replaced this belief but it is still current`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`entities:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` would fold 3 name variants (certain)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 4 uncertain pairs would go to the conflicts tab`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`412 memories are due a contradiction re-check`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` re-checking all of them is about $1.45`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` one run takes the 200 that have waited longest`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`no memory was changed. this run is logged as 0f2c7b18-...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`The last line always names the run, so undoing one never means looking the id up.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`A price is only shown for a model whose rates memloom knows. Anything else prints tokens and no\ndollar figure, rather than a confident wrong number.`})}),`\n`,_jsx(_components.p,{children:`A run with the contradiction re-check on can take a while, and the CLI waits for it.\nWatch it live in the viewer’s Settings tab if you want per-belief progress. Only one applying run\nat a time; a second is refused while the first is live.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`reconcile-possible`,children:`reconcile possible`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile possible`})}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3 unconfirmed contradictions. a second check stood behind each one, but read both quotes before answering.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`similarity 71%, judged by google/gemini-2.5-flash`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NEW: the release is scheduled for the 14th`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` EXISTING: the release is deferred until the extractor work lands`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` why: deferred then scheduled`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` id: 8a41c0e2-...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Both quotes were verified against the two memories when the finding was written, so they are the\nwhole question. Reading them beats opening two beliefs and comparing.`}),`\n`,_jsxs(_components.p,{children:[`Every finding also gets a second opinion: the model looks at that one pair on its own and decides\nwhether the two can both be true. Only findings it stands behind are listed. The ones it rejects\nare recorded as dismissed, so that pair is never raised again. Findings from before this check\nexisted get it on the next run with `,_jsx(_components.code,{children:`llm_recheck`}),` on.`]}),`\n`,_jsx(Heading,{level:`2`,id:`reconcile-yes-reconcile-no`,children:`reconcile yes, reconcile no`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile yes \u003cid> `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# confirm: creates a real conflict to resolve`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile no \u003cid> `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dismiss: that pair is never raised again`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The id comes from `,_jsx(_components.code,{children:`reconcile possible`}),`, not a run id. An id already answered, or one whose\nmemories the store has moved on from, prints a pointer back to the list rather than an error.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`A rejection is not waste. It records what you do not consider a contradiction.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`reconcile-stop`,children:`reconcile stop`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile stop \u003crun id>`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Whatever the run already checked stays checked, so stopping costs nothing beyond the calls already\npaid for and the next run resumes there.`}),`\n`,_jsx(_components.p,{children:`This also works on a run whose daemon died mid-sweep. That is the only way such a row stops\ncounting as live, and until it does a new applying run is refused.`}),`\n`,_jsx(Heading,{level:`2`,id:`reconcile-undo`,children:`reconcile undo`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile undo \u003crun id>`})}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`restored 4 memories, unfolded 2 entities, skipped 1 the store moved on from`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`What the run did`}),_jsx(_components.th,{children:`What undo does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Retired a memory`}),_jsx(_components.td,{children:`Restores it, only while still stale and nothing else staled it since`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Folded an entity`}),_jsx(_components.td,{children:`Returns it with its original id and vector`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Raised a conflict nobody answered`}),_jsx(_components.td,{children:`Takes it back out of the queue`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Raised a conflict you answered`}),_jsx(_components.td,{children:`Leaves it, counted as skipped. Your answer outranks the undo`})]})]})]}),`\n`,_jsx(_components.p,{children:`Possible contradictions are findings rather than changes, so undo leaves them. Undoing twice does\nnothing the second time. The viewer’s Console tab has undo and stop next to the run history.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`reconcile-settings`,children:`reconcile settings`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`memloom reconcile settings`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Pass`}),_jsx(_components.th,{children:`Cost`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`invariants`})}),_jsx(_components.td,{children:`Fix memory principle violations`}),_jsx(_components.td,{children:`free, on`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entities`})}),_jsx(_components.td,{children:`Resolve duplicate entities`}),_jsx(_components.td,{children:`free, on`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`llm_entities`})}),_jsx(_components.td,{children:`Let a model resolve uncertain entity pairs`}),_jsx(_components.td,{children:`one call per pair`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`llm_conflicts`})}),_jsx(_components.td,{children:`Let a model resolve memory conflicts`}),_jsx(_components.td,{children:`one call per conflict`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`llm_recheck`})}),_jsx(_components.td,{children:`Look for contradictions the save path could not see`}),_jsx(_components.td,{children:`up to 200 calls per run`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`startupCatchUp`})}),_jsx(_components.td,{children:`Free passes on startup when the last run is over 36 hours old`}),_jsx(_components.td,{children:`free`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The CLI prints them and does not change them. Toggle in the viewer’s Settings tab or with\n`,_jsx(_components.code,{children:`POST /memory/reconcile/settings`}),`. They live in the store, not `,_jsx(_components.code,{children:`config.env`}),`, so a change needs no\nrestart.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`RECONCILE_ENABLED=0`}),` is a separate kill switch. It refuses any run that was asked to act and\nstops automatic runs, leaving previews working. See `,_jsx(_components.a,{href:`/guides/configuration`,children:`Configuration`}),`.`]})})]})}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":{"config":{},"pageMetadata":{"title":"Reconciliation","description":"reconcile and its subcommands: the pass, its findings, and how to take a run back","icon":"rotate","href":"/cli/reconcile"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"reconcile","slug":"reconcile","depth":2,"children":[]},{"title":"reconcile possible","slug":"reconcile-possible","depth":2,"children":[]},{"title":"reconcile yes, reconcile no","slug":"reconcile-yes-reconcile-no","depth":2,"children":[]},{"title":"reconcile stop","slug":"reconcile-stop","depth":2,"children":[]},{"title":"reconcile undo","slug":"reconcile-undo","depth":2,"children":[]},{"title":"reconcile settings","slug":"reconcile-settings","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"versuno-663ee29a","siteName":"memloom docs","title":"Reconciliation - memloom docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-25T18:57:42.510Z","originalFileLocation":"cli/reconcile.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=\"reconcile and its subcommands: the pass, its findings, and how to take a run back\">\u003cmeta data-mint-head name=\"application-name\" content=\"memloom docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/versuno-663ee29a/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/versuno-663ee29a/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/versuno-663ee29a/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/versuno-663ee29a/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Reconciliation - memloom docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"reconcile and its subcommands: the pass, its findings, and how to take a run back\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"memloom docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.memloom.dev/cli/reconcile\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://versuno-663ee29a.mintlify.site/_mintlify/api/og/v2?division=Commands\u0026amp;title=Reconciliation\u0026amp;description=reconcile+and+its+subcommands%3A+the+pass%2C+its+findings%2C+and+how+to+take+a+run+back\u0026amp;theme=75746b71abc72656f8119c31\u0026amp;signature=8218dc6b42d7181d5f58451a7059f8181fed117e49ebf62cf15cd911b591e915\">\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=\"Reconciliation - memloom docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"reconcile and its subcommands: the pass, its findings, and how to take a run back\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://versuno-663ee29a.mintlify.site/_mintlify/api/og/v2?division=Commands\u0026amp;title=Reconciliation\u0026amp;description=reconcile+and+its+subcommands%3A+the+pass%2C+its+findings%2C+and+how+to+take+a+run+back\u0026amp;theme=75746b71abc72656f8119c31\u0026amp;signature=8218dc6b42d7181d5f58451a7059f8181fed117e49ebf62cf15cd911b591e915\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/versuno-663ee29a/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"memloom docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1f62d6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.memloom.dev/cli/reconcile\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/reconcile.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.memloom.dev/#organization\",\"name\":\"memloom docs\",\"url\":\"https://docs.memloom.dev\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.memloom.dev#website\",\"name\":\"memloom docs\",\"url\":\"https://docs.memloom.dev\",\"publisher\":{\"@id\":\"https://docs.memloom.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.memloom.dev/cli/reconcile#webpage\",\"url\":\"https://docs.memloom.dev/cli/reconcile\",\"name\":\"Reconciliation\",\"description\":\"reconcile and its subcommands: the pass, its findings, and how to take a run back\",\"dateModified\":\"2026-10-25T18:57:42.510Z\",\"isPartOf\":{\"@id\":\"https://docs.memloom.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.memloom.dev/cli/reconcile#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.memloom.dev/cli/reconcile#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Commands\",\"item\":\"https://docs.memloom.dev/cli/daemon\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reconciliation\",\"item\":\"https://docs.memloom.dev/cli/reconcile\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.memloom.dev/cli/reconcile#article\",\"headline\":\"Reconciliation\",\"name\":\"Reconciliation\",\"description\":\"reconcile and its subcommands: the pass, its findings, and how to take a run back\",\"url\":\"https://docs.memloom.dev/cli/reconcile\",\"mainEntityOfPage\":{\"@id\":\"https://docs.memloom.dev/cli/reconcile#webpage\"},\"dateModified\":\"2026-10-25T18:57:42.510Z\",\"publisher\":{\"@id\":\"https://docs.memloom.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.memloom.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"memloom docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"memloom docs","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/api-reference/save-a-memory"}]},{"tab":"CLI Reference","icon":"terminal","groups":[{"group":"CLI","icon":"terminal","pages":[{"title":"Overview","icon":"terminal","href":"/cli/overview"}]},{"group":"Commands","icon":"square-terminal","pages":[{"title":"Daemon","icon":"server","href":"/cli/daemon"},{"title":"Memories","icon":"brain","href":"/cli/memories"},{"title":"Scopes","icon":"folder-tree","href":"/cli/scopes"},{"title":"Import","icon":"file-import","href":"/cli/import"},{"title":"Graph and embeddings","icon":"circle-nodes","href":"/cli/graph"},{"title":"Context","icon":"file-lines","href":"/cli/context"},{"title":"Conflicts","description":"List pending contradictions, or let a model clear the queue","icon":"scale-balanced","href":"/cli/conflicts"},{"title":"Reconciliation","icon":"rotate","href":"/cli/reconcile"}]},{"group":"Connectors","icon":"link","pages":[{"title":"Notion","description":"Sync Notion pages and databases as recallable context","icon":"book","href":"/cli/notion"}]}]},{"tab":"MCP Reference","icon":"plug","pages":[{"title":"MCP Reference","href":"/mcp/setup"}]}]},"basePath":"","title":"Reconciliation - memloom docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}