Nanobot
Nanobot defines what temporary chat must forget
Nanobot proposes temporary chats that stay multi-turn but avoid session history, WebUI transcripts, automatic memory and queued-prompt storage. A stacked correction enforces memory-only sessions, while a user request points out that shared workspace files still outlive the conversation unless file scope is redesigned.
HKUDS/nanobot PR #5252 is the inspected primary source: “feat(webui): add temporary chat mode.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- HKUDS/nanobot PR #5252 was created 2026-08-05T06:08:41Z and was open at inspection; its title is “feat(webui): add temporary chat mode.” - HKUDS/nanobot PR #5259 was created 2026-08-05T14:14:01Z and was closed at inspection; its title is “fix(webui): enforce memory-only temporary sessions.” - HKUDS/nanobot issue #5276 was created 2026-08-06T22:33:42Z and was open at inspection; its title is “Allow enforcing session-level temporary file isolation.” - The repository reported 46709 stars, 786 open issues, default branch main, and last push 2026-08-06T23:55:40Z. - The latest tagged-release baseline checked was v0.3.0 published 2026-07-25T08:08:47Z.
What changed
HKUDS/nanobot PR #5252 reports: Summary add a Temporary Chat mode to the new-topic hero; it is created only after the first message, supports multiple temporary chats, and is not shown inside normal or temporary conversations keep temporary conversations multi-turn but non-persistent: no session/history file, WebUI transcript, long-term or recent memory, Dream input, queued-prompt localStorage, or message-content logging keep temporary chats on the restricted default workspace and remove project selection reject persistent commands and disable create_goal, update_goal, spawn, and cron; /model and /stop remain available close temporary chats quietly: no reload confirmation and no connection-interruption toast on explicit close or disconnect, immediately detach the WebSocket subscription, clear visible turn/stream state, forget the session, and cancel active model, tool, and subagent work fix the Signal channel override so it follows the current base-channel message contract Privacy boundary Temporary Chat means nanobot does not retain the conversation in its session history or
HKUDS/nanobot PR #5259 reports: Stacked on #5252. Please review only this PR's diff. Contract Temporary chat conversation state stays in process memory and is not written to nanobot session history, WebUI transcripts, or automatic memory. Requests still reach the configured model provider; attachments, tool actions, and external services may leave artifacts. Existing sessions remain readable through read_session. create_goal, update_goal, spawn, and cron are unavailable. Persistent slash commands are rejected; /model and /stop remain available. AgentLoop knows only the generic memory-only session property, not the Temporary chat product concept. Implementation Add one runtime-only Session.memory_only boolean. Make SessionManager.save() a no-op for memory-only sessions and invalidate the cached session on clear or disconnect. Let the WebSocket boundary mark Temporary chat messages, skip transcript persistence, isolate them from unified sessions, and drop stale messages after disposal. Remove the persistence enum, dedicated lifecycle service, temporary compaction path, tool capability abstraction, and other speculative machinery.
HKUDS/nanobot issue #5276 reports: Right now, even with restrictToWorkspace true and bwrap sandboxing enabled, the ~/.nanobot/workspace directory is a global directory R/W by all sessions in a shared state. Some of this is good, like the ability for skills to evolve or the introspection into the SOUL/USER file, but when multiple sessions are executed where the agent eventually think about producing an artefact, it gets messy. It gets messy enough that tweaking the prompt to suggest it to use a subdirectory doesn't always work. Instead, it should be enforced on the harness level. I'd say that by default – but it's not a problem if it is opt-in – a single running session should get a view of the workspace (maybe achieved through specific mount-point redirection in bwrap) where the **global** state and the **local** state is clearly indicated and compartmentalised. And the agent should first create and throw
Why it matters
A no-history label does not erase model-provider requests, tool side effects or files. The public contract is useful precisely because it names those limits and exposes the remaining session-level workspace problem. The operator test is whether authority, persisted state and the visible outcome still describe the same event after retries, restarts or delegation.
Current
The primary record was open when captured on 2026-08-07. The release baseline was v0.3.0 published 2026-07-25T08:08:47Z. Repository metadata, pull requests, issues, release records, Google News discovery, Hacker News discovery, Lobsters, Metamesh and the rendered ClawCharts row were checked. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/HKUDS/nanobot/pull/5252. Supporting records are https://github.com/HKUDS/nanobot/pull/5259 and https://github.com/HKUDS/nanobot/issues/5276. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts, reproductions and deployment observations remain attributed to their authors unless explicitly identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Verify disconnect cancellation, zero persisted transcript/memory, restricted tools and explicit file cleanup before presenting temporary chat as a privacy boundary. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently after intervention.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.