Before filing
Closest existing issue
none found (#134 mentions multi-workspace support, but is about terminal discoverability — a different problem)
What's broken
With multi-workspace support disabled, a chat that has never had a folder explicitly attached cannot be moved to a different folder: berdctl folder attach refuses because the chat "already has a workspace" and recommends folder replace, while folder replace refuses because that same folder "is not attached". The two commands contradict each other, and the chat can't be moved at all.
Steps to reproduce
- Launch Berd
- With multi-workspace support disabled (mine is; I haven't changed this setting)
- Start a chat and never explicitly attach a folder, so it sits on Berd's implicit default cwd. (Mine were chats inside a project that had no working directory configured.)
berdctl folder list --session-id <id> → reports one folder entry with "cwd": false, while the top-level "cwd" field is that same path
berdctl folder attach --session-id <id> --path <other folder>
- Following the step-5 error's advice:
berdctl folder replace --session-id <id> --old-path <path from step 4> --new-path <other folder>
What you expected to happen
One of them works — either replace accepts the implicit default folder as --old-path, or attach swaps it out when multi-workspace is off, or the step-5 error names a remedy that can actually succeed.
What actually happened
step 5: invalid_args: Multi-workspace support is disabled and this chat
already has a workspace. Enable it, or use `berdctl folder replace`
/ `berdctl folder set-cwd`.
step 6: invalid_args: Could not replace "/Users/<me>/goose artifacts":
it is not attached to session "<id>"
attach treats the implicit default as an existing workspace; replace treats it as not attached. The error in step 5 explicitly recommends a command that cannot succeed.
Related minor confusion: folder list reporting "cwd": false on the entry that is the cwd (step 4).
How often does it happen?
Every time — reliably reproducible (identical on three separate chats)
Berd version
0.6.2
Operating system
macOS (Apple Silicon)
Model and provider
Claude Opus and Claude Fable 5 via the Claude Code (claude-acp) harness — though this reproduces entirely through berdctl, with no agent turn involved.
Relevant log output
[2026-08-26][02:46:15][tauri_plugin_berdctl::server][INFO] [berdctl] /v1/call command=folders result=invalid_args duration_ms=119
[2026-08-26][02:46:15][tauri_plugin_berdctl::server][INFO] [berdctl] /v1/call command=folders result=invalid_args duration_ms=93
[2026-08-26][02:46:15][tauri_plugin_berdctl::server][INFO] [berdctl] /v1/call command=folders result=invalid_args duration_ms=86
[2026-08-26][02:46:20][tauri_plugin_berdctl::server][INFO] [berdctl] /v1/call command=folders result=invalid_args duration_ms=45
[2026-08-26][02:46:20][tauri_plugin_berdctl::server][INFO] [berdctl] /v1/call command=folders result=invalid_args duration_ms=40
[2026-08-26][02:46:20][tauri_plugin_berdctl::server][INFO] [berdctl] /v1/call command=folders result=invalid_args duration_ms=41
First three lines are the attach attempts, last three the replace attempts.
Filed via gh (an agent helped investigate and draft; I reviewed before posting). Laid out with the bug-report form's fields since the API path doesn't render the form.
Before filing
Closest existing issue
none found (#134 mentions multi-workspace support, but is about terminal discoverability — a different problem)
What's broken
With multi-workspace support disabled, a chat that has never had a folder explicitly attached cannot be moved to a different folder:
berdctl folder attachrefuses because the chat "already has a workspace" and recommendsfolder replace, whilefolder replacerefuses because that same folder "is not attached". The two commands contradict each other, and the chat can't be moved at all.Steps to reproduce
berdctl folder list --session-id <id>→ reports one folder entry with"cwd": false, while the top-level"cwd"field is that same pathberdctl folder attach --session-id <id> --path <other folder>berdctl folder replace --session-id <id> --old-path <path from step 4> --new-path <other folder>What you expected to happen
One of them works — either
replaceaccepts the implicit default folder as--old-path, orattachswaps it out when multi-workspace is off, or the step-5 error names a remedy that can actually succeed.What actually happened
attachtreats the implicit default as an existing workspace;replacetreats it as not attached. The error in step 5 explicitly recommends a command that cannot succeed.Related minor confusion:
folder listreporting"cwd": falseon the entry that is the cwd (step 4).How often does it happen?
Every time — reliably reproducible (identical on three separate chats)
Berd version
0.6.2
Operating system
macOS (Apple Silicon)
Model and provider
Claude Opus and Claude Fable 5 via the Claude Code (claude-acp) harness — though this reproduces entirely through
berdctl, with no agent turn involved.Relevant log output
First three lines are the
attachattempts, last three thereplaceattempts.Filed via
gh(an agent helped investigate and draft; I reviewed before posting). Laid out with the bug-report form's fields since the API path doesn't render the form.