Feature request: opt-in exclusive worktree ownership for session families (v2)
I maintainer di solito rispondono entro 1 giorno
@kitlangton ci sta già lavorando.
Dal 4/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Feature request: opt-in exclusive worktree ownership for session families (v2)
Problem
The v2 session API accepts a location when creating a root session and allows an existing session to be moved. In an isolated OpenCode v2.0.22 scratch-config probe, two sequential and two concurrent independent root sessions were accepted at the same linked-worktree path. A child inherited its parent location. A separate root moved to that occupied destination and the API returned 204; reading the session confirmed the new location.
This is a bounded API behavior report, not a claim that every OpenCode workflow has this problem or that a universal existing bug is promised. The concern is that independent roots can share a working tree unintentionally, while session ancestry already distinguishes families.
Reproduction (isolated scratch instance only)
Prerequisites: use an isolated OpenCode v2.0.22 scratch configuration/database and an owned loopback listener. BASE and TEST_PASSWORD must come from that isolated listener only; explicitly reject the production listener on port 4097 and any user's working data. WT is an absolute path to a disposable linked worktree. Keep the scratch password only in the local variable, do not put its value in docs or logs, and do not enable shell tracing.
body=$(jq -n --arg directory "$WT" '{id:"ses_probe_root_A_001",location:{directory:$directory}}')
curl -fS --max-time 20 --user "opencode:${TEST_PASSWORD}" -X POST "$BASE/api/session" \
-H 'content-type: application/json' --data "$body"
body=$(jq -n --arg directory "$WT" '{id:"ses_probe_root_B_001",location:{directory:$directory}}')
curl -fS --max-time 20 --user "opencode:${TEST_PASSWORD}" -X POST "$BASE/api/session" \
-H 'content-type: application/json' --data "$body"
Both returned HTTP 200 in the isolated probe. Repeating two root creates concurrently also returned HTTP 200 for each. Creating a child with parentID set to root A returned 200 and inherited that location. Creating root C at another disposable directory, then posting {"directory":"/absolute/path/to/linked-worktree"} to /api/session/ses_probe_root_C_001/move, returned 204; a GET of that session showed the target location.
These are placeholders; normalize the path and use fresh probe IDs in any reproduction. The complete isolated run log is not a public artifact and contains host-specific paths.
Request
Please consider an opt-in native admission policy that atomically limits each real linked worktree to one root session family across all writers. Resolve aliases such as symlinks and subdirectories to the same linked-worktree identity. Apply the same admission decision to create, move, import, fork, and queued placement/delivery paths; reject foreign, ambiguous, or incomplete ownership states without mutation. Children should inherit family ownership naturally.
The v2.0.22 source review shows session-ID idempotency, not a location-occupancy guard. The request is for native enforcement using existing durable session state, not a second ownership ledger. Preserve ordinary multi-session behavior unless the opt-in policy is enabled. Pending-move reservations must be atomic/durable; a client-side check followed by a list is racy and bypassable. This is an implementation proposal, not a claim that a particular storage mechanism already exists.
Expected checks
- Two concurrent independent roots targeting one worktree: exactly one admitted when opt-in is enabled.
- Same-family children, grandchildren, and resume remain permitted.
- Alias paths identify the same worktree; foreign move/import/fork and queued placement races fail without mutation.
- Archived or descendant-only roots remain ownership anchors until explicit clearance; failed ancestry/enumeration fails closed.
- Default behavior without opt-in preserves normal multi-session workflows.
References
- OpenCode v2.0.22 source tag:
527f0b931d1f9b3ebd34e106c51b31ce5db5b075, especiallypackages/core/src/session.tsandpackages/server/src/handlers/session.ts. - Related, not duplicates: #51992 and #51196.
- Lingua principale
- TypeScript
- Stelle
- 221k
- Fork
- 29.6k
- Merge medio
- 7h 41m
- PR unite (30g)
- 510
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di anomalyco/opencode
-
core: OpenRouter BYOK sessions record cost = 0 since v2.2.0 (ignores cost_details.upstream_inference_cost)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertareproduced
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
anomalyco/opencode#60558 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
anomalyco/opencode#60541 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
anomalyco/opencode#60529 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
anomalyco/opencode#60469 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
TUI permission prompt for MCP tools doesn't show the call argumentsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
anomalyco/opencode#60350 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di anomalyco/opencode
Issue simili
-
bug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
PhyberApex/kuroshiro#1687 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
microsoft/monaco-editor#5563 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
awslabs/visual-asset-management-system#937 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100