You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] Cannot move a session between workspaces; renaming a workspace folder breaks session binding
#6445
A session's working directory (cwd) is bound at creation and cannot be changed afterward. As a result:
A session cannot be moved to another workspace — there is no remote API for it.
Renaming a workspace folder orphans every session in it — workspace membership is derived from cwd, so a path change breaks the binding (status: "missing-dir").
Verified against the current remote method maps (workspace and session controllers):
workspace/insertSessionBefore only reorders sessions already present in the target workspace. Moving a session from another workspace fails with workspace/move-invalid: "cannot move session '…' in workspace '…': the session is not accounted".
session/create with an existing sessionId and a different cwd/workspaceId throws session/conflict (the stored header cwd must equal the requested cwd).
There is no public attachSession / detachSession / setCwd / moveSession remote method.
Steps to reproduce
Create a session in workspace A (its cwd = A's path).
Call workspace/insertSessionBefore with workspaceId = B (a different workspace) and the session's sessionId.
Observe: the move is rejected with workspace/move-invalid ("the session is not accounted").
Alternatively, rename workspace A's folder on disk and restart DSH: the workspace reports missing-dir, and its sessions no longer appear under it.
Expected vs Actual behavior
Expected
Actual
Move session to another workspace
Supported via a workspace/session API
Fails: workspace/move-invalid ("not accounted")
Rename workspace folder
Member sessions follow the workspace
Sessions orphaned (cwd mismatch, missing-dir)
Impact
This blocks routine workspace-folder renames (e.g. a planned bulk rename of several workspace folders). The only workaround is a manual storage-level migration with DSH stopped (move the folder + rewrite each session's stored cwd + update the workspace registry) — fragile and error-prone.
Suggested fix
Provide a first-class "move/rehome" API (update a session's cwd and re-account it in the target workspace), or decouple workspace membership from cwd, or add a "rename workspace folder" operation that cascades the path change to all member sessions.
[Баг] Сессию нельзя перенести в другой воркспейс; переименование папки воркспейса рвёт привязку сессий
EN: [Bug] Cannot move a session between workspaces; renaming a workspace folder breaks session binding
Рабочая папка сессии (cwd) фиксируется при создании и не может быть изменена позже. Из этого следуют две проблемы:
Сессию нельзя перенести в другой воркспейс — нет удалённого API для этого.
Переименование папки воркспейса «отрывает» все его сессии — принадлежность воркспейсу выводится из cwd, смена пути ломает привязку (status: "missing-dir").
Проверено по текущим картам удалённых методов (workspace и session контроллеры):
workspace/insertSessionBefore только переставляет сессии, уже находящиеся в целевом воркспейсе. Перенос из другого воркспейса падает с workspace/move-invalid: "cannot move session '…' in workspace '…': the session is not accounted".
session/create с существующим sessionId и другим cwd/workspaceId бросает session/conflict (хранимый cwd заголовка обязан совпадать с запрошенным).
Публичных методов attachSession / detachSession / setCwd / moveSessionнет.
Шаги воспроизведения
Создать сессию в воркспейсе A (её cwd = путь A).
Вызвать workspace/insertSessionBefore с workspaceId = B (другой воркспейс) и sessionId этой сессии.
Наблюдать: перенос отклонён с workspace/move-invalid («the session is not accounted»).
Либо переименовать папку воркспейса A на диске и перезапустить DSH: воркспейс покажет missing-dir, а его сессии перестанут числиться в нём.
Ожидаемое vs фактическое поведение
Ожидается
Фактически
Перенос сессии в другой воркспейс
Поддерживается через API
Падает: workspace/move-invalid («not accounted»)
Переименование папки воркспейса
Сессии следуют за воркспейсом
Сессии отрываются (несовпадение cwd, missing-dir)
Влияние
Блокирует рутинные переименования папок воркспейсов (например, плановое массовое переименование нескольких воркспейсов). Единственный обход — ручная миграция на уровне хранилища с остановленным DSH (перенести папку + переписать cwd каждой сессии + обновить реестр воркспейсов) — хрупко и чревато ошибками.
Предложение по исправлению
Добавить полноценный API «переноса/rehome» (обновить cwd сессии и переучесть её в целевом воркспейсе), либо отвязать принадлежность воркспейсу от cwd, либо добавить операцию «переименовать папку воркспейса», каскадно меняющую путь у всех его сессий.
Anonymized for public reporting: workspace names, paths, session names/ids and dates have been genericized.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
RU: [Баг] Сессию нельзя перенести в другой воркспейс; переименование папки воркспейса рвёт привязку сессий
Environment
@deepseek-ai/dsh0.1.2-rc.1(resolved vianpx)<date>%DSH_HOME%\sessions\--<encoded-cwd>--\<session-id>\session.jsonl.zstdSummary
A session's working directory (
cwd) is bound at creation and cannot be changed afterward. As a result:cwd, so a path change breaks the binding (status: "missing-dir").Verified against the current remote method maps (
workspaceandsessioncontrollers):workspace/insertSessionBeforeonly reorders sessions already present in the target workspace. Moving a session from another workspace fails withworkspace/move-invalid: "cannot move session '…' in workspace '…': the session is not accounted".session/createwith an existingsessionIdand a differentcwd/workspaceIdthrowssession/conflict(the stored headercwdmust equal the requestedcwd).attachSession/detachSession/setCwd/moveSessionremote method.Steps to reproduce
cwd= A's path).workspace/insertSessionBeforewithworkspaceId= B (a different workspace) and the session'ssessionId.workspace/move-invalid("the session is not accounted").missing-dir, and its sessions no longer appear under it.Expected vs Actual behavior
workspace/move-invalid("not accounted")cwdmismatch,missing-dir)Impact
This blocks routine workspace-folder renames (e.g. a planned bulk rename of several workspace folders). The only workaround is a manual storage-level migration with DSH stopped (move the folder + rewrite each session's stored
cwd+ update the workspace registry) — fragile and error-prone.Suggested fix
Provide a first-class "move/rehome" API (update a session's
cwdand re-account it in the target workspace), or decouple workspace membership fromcwd, or add a "rename workspace folder" operation that cascades the path change to all member sessions.[Баг] Сессию нельзя перенести в другой воркспейс; переименование папки воркспейса рвёт привязку сессий
EN: [Bug] Cannot move a session between workspaces; renaming a workspace folder breaks session binding
Окружение
@deepseek-ai/dsh0.1.2-rc.1(черезnpx)<date>%DSH_HOME%\sessions\--<encoded-cwd>--\<session-id>\session.jsonl.zstdКраткое описание
Рабочая папка сессии (
cwd) фиксируется при создании и не может быть изменена позже. Из этого следуют две проблемы:cwd, смена пути ломает привязку (status: "missing-dir").Проверено по текущим картам удалённых методов (
workspaceиsessionконтроллеры):workspace/insertSessionBeforeтолько переставляет сессии, уже находящиеся в целевом воркспейсе. Перенос из другого воркспейса падает сworkspace/move-invalid: "cannot move session '…' in workspace '…': the session is not accounted".session/createс существующимsessionIdи другимcwd/workspaceIdбросаетsession/conflict(хранимыйcwdзаголовка обязан совпадать с запрошенным).attachSession/detachSession/setCwd/moveSessionнет.Шаги воспроизведения
cwd= путь A).workspace/insertSessionBeforeсworkspaceId= B (другой воркспейс) иsessionIdэтой сессии.workspace/move-invalid(«the session is not accounted»).missing-dir, а его сессии перестанут числиться в нём.Ожидаемое vs фактическое поведение
workspace/move-invalid(«not accounted»)cwd,missing-dir)Влияние
Блокирует рутинные переименования папок воркспейсов (например, плановое массовое переименование нескольких воркспейсов). Единственный обход — ручная миграция на уровне хранилища с остановленным DSH (перенести папку + переписать
cwdкаждой сессии + обновить реестр воркспейсов) — хрупко и чревато ошибками.Предложение по исправлению
Добавить полноценный API «переноса/rehome» (обновить
cwdсессии и переучесть её в целевом воркспейсе), либо отвязать принадлежность воркспейсу отcwd, либо добавить операцию «переименовать папку воркспейса», каскадно меняющую путь у всех его сессий.All reactions