jackwener/OpenCLI · error · CommandExecutionError
Kimi history rename was not verified for chat ${id}
Error message
Kimi history rename was not verified for chat ${id} What it means
Kimi's history rename command submits the new title via the edit input, then verifies inside the page that a sidebar history row for the chat id now contains the new title text. If the DOM check fails, it throws CommandExecutionError because the rename could not be confirmed. The library refuses to report success without visual confirmation in the history list.
Source
Thrown at clis/kimi/audit-extras.js:261
const inputs = Array.from(document.querySelectorAll('input[type="text"], input:not([type])')).filter(isVisible);
const input = inputs[inputs.length - 1];
if (!input) return { ok: false, reason: 'No input mounted after clicking Edit.' };
const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
setter.call(input, ${JSON.stringify(newTitle)});
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
input.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
return { ok: true };
})()`);
if (!fillRes?.ok) throw new CommandExecutionError(fillRes?.reason || 'Rename input fill failed', '');
await page.wait(1);
const verified = await page.evaluate(`(() => {
const row = Array.from(document.querySelectorAll('a[href*="/chat/' + ${JSON.stringify(id)} + '"]'))
.find((el) => (el.innerText || el.textContent || '').includes(${JSON.stringify(newTitle)}));
return !!row;
})()`);
if (!verified) {
throw new CommandExecutionError(
`Kimi history rename was not verified for chat ${id}`,
'The edit input was submitted, but the history row did not show the requested title.',
);
}
return [{ Status: 'renamed', ChatId: id, NewTitle: newTitle }];
},
});
View on GitHub (pinned to 49907e53dc)
Solutions
- Retry the rename once after a short wait so the sidebar has time to re-render with the new title
- Verify manually in the Kimi sidebar that the rename actually took effect (it may have succeeded after the check ran)
- Ensure the target chat appears in the visible history list (open it once or scroll the sidebar) before renaming
- Check for a Kimi frontend markup change and update the row selector in audit-extras.js if the site changed
Example fix
// before
const verified = await page.evaluate(...);
if (!verified) throw new CommandExecutionError(...);
// after
let verified = await page.evaluate(...);
for (let i = 0; i < 5 && !verified; i++) {
await page.wait(1);
verified = await page.evaluate(...);
}
if (!verified) throw new CommandExecutionError(`Kimi history rename was not verified for chat ${id}`, '...'); Defensive patterns
Strategy: retry
Validate before calling
// verify sidebar row shows new title before trusting success
const rows = await page.evaluate(`Array.from(document.querySelectorAll('a[href*="/chat/${id}"]')).map(a => a.innerText)`);
if (!rows.some(t => t.includes(newTitle))) console.warn('rename not yet visible'); Type guard
function isRenameVerified(row, id, newTitle) {
return typeof row?.id === 'string' && row.id === id &&
typeof row?.title === 'string' && row.title.includes(newTitle);
} Try / catch
try {
await kimiHistoryRename({ id, title: newTitle });
} catch (e) {
if (e.message.includes('not verified')) {
await sleep(2000);
await kimiHistoryRename({ id, title: newTitle }); // retry once
} else throw e;
} Prevention
- Wait a moment between submitting the edit and verifying the sidebar
- Ensure the target chat is visible in the history list before renaming
- Pin the chat or open it once so its row exists in the DOM
When it happens
Trigger: Calling the kimi history rename command with a chat id whose sidebar row either did not re-render with the new title yet, or the row selector `a[href*="/chat/<id>"]` did not match, within the verification evaluate.
Common situations: Kimi UI lag: the edit submitted but React has not repainted the sidebar row when verification runs; the chat is not pinned/visible in the current history list so the row is absent from the DOM; a Kimi frontend update changed the history row markup; the new title contains characters the app normalizes differently.
Related errors
- No new Kimi assistant reply was visible before the timeout.
- twitter unlike confirmation
- twitter unretweet confirmation
- Unexpected 12306 probe: ${JSON.stringify(probe)}
- ${config.site} login
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/7b4b8f0637c1b750.
Report an issue: GitHub.