bug: local sandbox sessions fail to recover after host sleep
@drew đang làm issue này rồi.
Từ ngày 23/9/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
User Story
As a developer running OpenShell locally, I want an attached sandbox to survive laptop sleep and wake, so that I can resume the same canonical process and workspace without recreating the sandbox.
Problem Statement
Local Docker, Podman, and VM gateways use non-expiring bootstrap credentials when gateway_jwt.ttl_secs is omitted, but launch-scoped gateway and Sandbox Protocol credentials currently fall back to a 15-minute lifetime. A laptop can remain suspended beyond that lifetime without giving the supervisor an opportunity to refresh. After wake, the sandbox transport can be closed as expired and sandbox connect does not recover an established SSH transport interruption.
This creates inconsistent local behavior: start, stop, and exec establish fresh command paths, while an interactive connect session can exit or fail to reattach after sleep.
Impact / Why This Matters
Developers lose long-running interactive sessions merely by closing a laptop. The practical workaround is to rerun commands, restart components, or recreate the sandbox, which can discard process state and interrupts the expected persistent-sandbox workflow. Increasing a finite TTL only changes how long the laptop may sleep before failure and does not make local sessions robust.
Acceptance Criteria
- Omitting
gateway_jwt.ttl_secson local Docker, Podman, and VM gateways produces non-expiring launch-scoped gateway credentials. - The same omission produces non-expiring Sandbox Protocol credentials and propagates that state through refresh responses and clients.
- Non-expiring credentials do not schedule an immediate or finite sandbox connection deadline.
- Shared deployments can continue to configure positive credential TTLs, and Kubernetes retains its positive default.
-
sandbox connectretries an established SSH transport failure for a bounded period and reattaches to the same canonical main process. - Initial authentication failures, sandbox lifecycle failures, and clean process exits are not retried.
- Automated tests cover non-expiring credential propagation, gateway restart or stop-start behavior, and forced SSH transport recovery.
Reproduction Steps
- Start a local Docker, Podman, or VM gateway with
gateway_jwt.ttl_secsomitted. - Create a persistent sandbox with a long-running canonical main process.
- Attach with
openshell sandbox connect. - Suspend the host laptop for longer than 15 minutes.
- Wake the laptop and attempt to continue or reconnect to the same sandbox.
- Observe that the interactive connection exits or cannot resume even though lifecycle commands may still establish fresh command paths.
Environment
- OpenShell: main before PR #3573
- OS: laptop host with suspend and resume
- Runtime, deployment, or integration: local Docker, Podman, or VM gateway
Proposed Fix
Propagate the local non-expiring JWT configuration to both launch-scoped credential profiles and supervise the SSH child used by sandbox connect, allowing bounded transport recovery and reattachment to the same canonical process.
Implementation: #3573
- Ngôn ngữ chính
- Rust
- Star
- 8.7k
- Fork
- 1.3k
- Merge trung bình
- 2 ngày 6 giờ
- Pull request đã merge (30 ngày)
- 301
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 NVIDIA/OpenShell
-
area:docs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
-
state:triage-needed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
area:cli state:validated
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
state:triage-needed
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
area:build spike state:review-ready state:stale
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 68/100
Tất cả issue của NVIDIA/OpenShell
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
TheLarkInn/aipm#2413 ·
-
documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
todo:ticket
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
taikoxyz/taiko-mono#22168 · 1 bình luận ·