🤖 fix: deleting a Daytona workspace after an account switch leaves its sandbox in the old account
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
Research direction
Start with src/node/services/daytona/daytonaSandboxes.ts:321 and the review thread linked from the issue, then trace where the workspace’s daytona config is created and used during archive or removal. Check how the current account and 404 responses are handled. Done means the stored API URL and target distinguish accounts, and deletion handles mismatches as described for normal and forced removal.
Written by the indexing model from the issue text.
Description
Follow-up from the Codex review of #7100 (thread: https://github.com/coder/xum/pull/7100#discussion_r4353498597, src/node/services/daytona/daytonaSandboxes.ts:321).
Problem
A Daytona workspace does not record which Daytona account (API URL, key, target) created its sandbox. If the user switches Settings > Runtimes > Daytona from account A to account B and then archives or removes a workspace created under A, Xum asks account B for the sandbox. B answers 404, so the sandbox counts as missing, the delete is treated as done, and the workspace record goes away. The account-A sandbox stays behind: auto-stop (30 min) stops it, but auto-delete is off, so it keeps its disk until someone deletes it in the Daytona dashboard.
Proposed fix
Store an account fingerprint (API URL plus target, never the key) in the workspace's daytona config at create. On archive or remove, if the current account does not match, do not treat a 404 as a deleted sandbox: refuse with a message that names the original API URL/target and asks the user to switch back, or (forced removal) remove the workspace and warn that the sandbox was left in the other account.
Why it is deferred
#7100 runs its review loop under a P0/P1-only rule; P2 findings get a tracked follow-up.
- Dominant language
- TypeScript
- Stars
- 2.1k
- Forks
- 140
- Avg merge
- 3h 23m
- Merged PRs (30d)
- 953
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from coder/xum
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
Similar issues
-
bug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
apex-dev-tools/apex-log-parser#199 ·
Maintainers usually reply within 1 day
-
area/frontend/library-panels automated-triage type/bug type/ux
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PostHog/posthog.com#21607 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
ajv-validator/ajv#2689 ·
-
[Bug]: IME confirmation Enter can submit the SSH port-forward dialogPossibly taken @seijikohara claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day