[FEATURE] Discussion mode: read-only conversational sessions with exportable artifacts

Resolved 💬 4 comments Opened May 8, 2026 by Hugo-Dahl-Tyler Closed Jun 6, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Claude Code has no way to have a purely exploratory conversation without risking unintended writes to memory files, plan artifacts, project docs, or other persistent state. The existing plan mode is the closest approximation, but it imposes a decision-tree constraint — every turn must end with either ExitPlanMode or AskUserQuestion — which is the wrong mental model for open-ended discussion. It forces resolution when none is intended.

The result: users either accept the risk of side effects in a normal session, or they use plan mode and fight its exit constraints throughout a casual conversation.

Proposed Solution

A dedicated discussion mode — either a slash command (/discuss) or a launch flag (--discuss) — that:

  • Allows full read access (Read, Grep, Glob, read-only Bash)
  • Blocks all implicit writes (file edits, memory updates, plan artifact mutations)
  • Has no turn-resolution constraint — conversation can continue freely without forcing a plan or a clarifying question
  • Provides a /save-discussion [filename] command to export the conversation as a Markdown artifact for use in a future planning session

The saved artifact can then be referenced via the existing @filename syntax when starting a real planning session, restoring context without re-explaining the discussion.

Alternative Solutions

  • Remain in "plan mode" and deal with the prompts to exit
  • Create a skill which can do most of the work, while not having the "read-only" protection. Loss of full conversation for a generated summarization
  • Export the session and maybe the import can make appropriate inferences from it?

Priority

Medium - Would be very helpful

Feature Category

Other

Use Case Example

Having a discussion on how feasible an idea might be, walking through pitfalls, technologies, approaches, etc. The conversation usually spans several topics, technical and non-technical (documentation, user adoption, etc), which don't fit a typical "work on code" approach.

Imagine this as a more informal pre-planning discussion with a co-worker, spawned from a hallway conversation. Ironing out major details and considerations, finding out "do we have something like this already?"

Additional Context

Security Considerations

/save-discussion must not be a general filesystem write:

| Risk | Mitigation |
|---------------------------------------------------|-------------------------------------------------------------------------|
| Path traversal (/save-discussion ../../CLAUDE.md) | Strip path separators and .. components; reject absolute paths |
| Overwriting sensitive files | Blocklist CLAUDE.md, settings.json, and other known-sensitive filenames |
| Silent overwrite of existing file | Block or require explicit confirmation if target exists |
| Escaping designated directory | Write only to an allowlisted location (e.g. .claude/discussions/) |

The key distinction: discussion mode blocks implicit writes (side effects). /save-discussion is an explicit, user-initiated write - categorically different, and permitted by the user invoking it.

Out of Scope
  • This is not a general read-only filesystem API
  • /save-discussion is not a general-purpose file write command — it saves the current conversation transcript only, to a designated directory only
  • This is not a replacement for plan mode; plan mode's exit constraints are appropriate when implementation planning is the actual goal
  • This does not affect tool permissions in normal or plan mode
Related Issues
  • #47342 - Ask mode (overlapping intent, different framing)
  • #48824 - Read-only session mode for side chats (closed as duplicate of #47342, but captures the persistent-state-pollution concern this also addresses)

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗