Feature request: opt-in exclusive worktree ownership for session families (v2)
Maintainer thường phản hồi trong vòng 1 ngày
@kitlangton đang làm issue này rồi.
Từ ngày 4/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- TypeScript
- Star
- 221k
- Fork
- 29.6k
- Merge trung bình
- 7 giờ 41 phút
- Pull request đã merge (30 ngày)
- 510
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của anomalyco/opencode
-
core: OpenRouter BYOK sessions record cost = 0 since v2.2.0 (ignores cost_details.upstream_inference_cost)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởreproduced
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
anomalyco/opencode#60558 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
anomalyco/opencode#60541 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
anomalyco/opencode#60529 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
anomalyco/opencode#60469 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
TUI permission prompt for MCP tools doesn't show the call argumentsCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
anomalyco/opencode#60350 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của anomalyco/opencode
Issue tương tự
-
bug ready-for-agent
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
PhyberApex/kuroshiro#1687 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
microsoft/monaco-editor#5563 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
awslabs/visual-asset-management-system#937 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100