Problem
In Kimi Code Web, the "归档" (Archive) action for sessions behaves like an irreversible delete, but the UI does not communicate this clearly and provides no recovery path.
Reproduction
- Create a session in any workspace.
- Open the session row kebab menu (or the chat header options) and choose 归档 / Archive.
- Confirm the inline prompt.
- The session disappears from the sidebar.
Expected behavior
One of the following should be true:
- A) Archive is recoverable: There is a way to view archived sessions and unarchive them (e.g. an "Archived" section in the sidebar, like ChatGPT's "Archived Chats").
- B) Archive is irreversible: The action is labeled and confirmed as "删除 / Delete", so users understand the session is gone from the UI.
Actual behavior
- The session is marked
archived: true in state.json but is no longer visible anywhere in the UI.
- There is no "Archived" view, no search result for archived sessions, and no "Unarchive" action.
- The API only supports archiving (
POST /sessions/:id:archive); unarchive / restore actions return unsupported action.
- The confirmation prompt only says "归档会话?" / "Archive session?", which does not imply the action is permanent.
Why this matters
Users familiar with Gmail or ChatGPT "Archive" expect the item to remain accessible in an archive folder. In Kimi Code, the same word means "remove forever from the UI", which is misleading and can cause users to think data is lost.
Data is not truly deleted (it is still in state.json and can be recovered by manually setting archived: false), but there is no supported UI/API path to do so.
Possible solutions
-
Implement true unarchive (recommended long-term)
- Backend: add an
unarchive action (or allow archive to accept { archived: false }).
- Web UI: add an "Archived" section in the sidebar where archived sessions can be viewed and restored.
- Keep the "归档 / Archive" label.
-
Rename archive to delete (short-term, minimal change)
- Change all user-facing strings from "归档 / Archive" to "删除 / Delete".
- Update the confirmation prompt to clearly state the action is irreversible.
- This matches the current semantics without backend changes.
-
Keep archive label but warn irreversibility (minimal change)
- Keep "归档 / Archive".
- Change the confirmation prompt to e.g. "归档会话?已归档的会话将无法恢复。" / "Archive session? Archived sessions cannot be restored."
- Does not solve the recovery problem, but removes the misleading implication.
Affected code
apps/kimi-web/src/i18n/locales/zh/sidebar.ts
apps/kimi-web/src/i18n/locales/en/sidebar.ts
apps/kimi-web/src/i18n/locales/zh/header.ts
apps/kimi-web/src/i18n/locales/en/header.ts
apps/kimi-web/src/components/SessionRow.vue
apps/kimi-web/src/components/ChatHeader.vue
packages/server/src/routes/sessions.ts (for any backend action change)
packages/protocol/src/rest/session.ts
Environment
- Kimi Code Web (
apps/kimi-web)
- Any browser
Problem
In Kimi Code Web, the "归档" (Archive) action for sessions behaves like an irreversible delete, but the UI does not communicate this clearly and provides no recovery path.
Reproduction
Expected behavior
One of the following should be true:
Actual behavior
archived: trueinstate.jsonbut is no longer visible anywhere in the UI.POST /sessions/:id:archive);unarchive/restoreactions returnunsupported action.Why this matters
Users familiar with Gmail or ChatGPT "Archive" expect the item to remain accessible in an archive folder. In Kimi Code, the same word means "remove forever from the UI", which is misleading and can cause users to think data is lost.
Data is not truly deleted (it is still in
state.jsonand can be recovered by manually settingarchived: false), but there is no supported UI/API path to do so.Possible solutions
Implement true unarchive (recommended long-term)
unarchiveaction (or allowarchiveto accept{ archived: false }).Rename archive to delete (short-term, minimal change)
Keep archive label but warn irreversibility (minimal change)
Affected code
apps/kimi-web/src/i18n/locales/zh/sidebar.tsapps/kimi-web/src/i18n/locales/en/sidebar.tsapps/kimi-web/src/i18n/locales/zh/header.tsapps/kimi-web/src/i18n/locales/en/header.tsapps/kimi-web/src/components/SessionRow.vueapps/kimi-web/src/components/ChatHeader.vuepackages/server/src/routes/sessions.ts(for any backend action change)packages/protocol/src/rest/session.tsEnvironment
apps/kimi-web)