simlock simctl and simlock adb on a worker run only against the caller's lease, and fill the device in
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- typescript
調査の方向性
Start with src/contract/operations.ts and driverPassthrough, then trace #driverPassthrough in src/daemon/dispatcher.ts and the CLI spawn path. Read the lease lookup in the agent-device front and the drivers’ per-verb refusal rules to map where authorization and device insertion belong. Check the existing passthrough tests; done means worker commands are scoped to the caller’s selected lease, with single-lease device filling and the documented refusal cases covered.
索引モデルが issue の本文から書いたものです。
説明
Problem
On a worker, simlock simctl <args> and simlock adb <args> are not tied to the caller's lease. driver.passthrough has no authorization beyond the agent role (src/contract/operations.ts, driverPassthrough), the dispatcher resolves the command with only the tool and arguments (src/daemon/dispatcher.ts, #driverPassthrough), and the CLI spawns whatever comes back. Any UDID or serial on the command line runs, held or not. Through a gateway the same command goes through device.exec, which refuses without a lease (#deviceExec, UnknownLeaseError). --lease on a worker is "accepted and ignored" (working-with-a-device.mdx). The docs' own list of product gaps from the website rewrite (commit daa279ada) names this.
Two things follow from scoping the wrappers to the lease:
1. Enforcement of the one promise Simlock makes. simlock simctl install <other agent's UDID> … is refused with a message naming the caller's own device. booted and an adb call without -s are refused when the caller holds a lease, since they can reach another agent's device on the shared set or server. This is still an accident boundary: xcrun simctl stays reachable. It closes the case where an agent follows the rule "use simlock simctl" and still hits the wrong device because it copied the wrong id.
2. Less for the agent to carry. When the caller holds exactly one lease, the device argument can be filled in: simlock simctl install ./MyApp.app and simlock adb install app-debug.apk run against the caller's device. With several leases, --lease <id> picks one, as on a gateway today. The agent no longer copies the UDID out of the grant JSON into every command, and the instructions text shrinks.
Context
Found in the 2026-10-23 product review. The maintainer agreed to pursue it.
Facts for the spec session:
- The caller's identity on the socket is the requester (
SIMLOCK_AGENT_ID, the Claude Code or Codex session id, else the pid). Leases are found by requester, asheldForAnotherin the agent-device front already does withlease.list. - The admin role bypasses
ownsLeasetoday. Whether an operator at the terminal keeps unscoped passthrough (likely yes, with--leaseoptional) is a decision. - Where the device argument sits differs per tool:
simctl <verb> <udid> …for most verbs,adb -s <serial>before the verb,devicectl --device <udid>. The drivers already know their refusal lists per verb and can own the insertion rule. --export-envand the grantenvironmentcarry no device identifier for virtual devices; filling the argument in removes most of the need (#944 covers the environment side).- Tests pin today's behaviour that a worker's passthrough takes no lease; they change with this.
Written by an agent.
- 主要言語
- TypeScript
- スター
- 22
- フォーク
- 2
- 平均マージ
- 7時間 38分
- マージ済み PR(30日)
- 413
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
callstackincubator/simlock のほかの issue
-
bug:ready
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
callstackincubator/simlock#639 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
A lease renew right after a gateway restart answers UNKNOWN_LEASE and the client drops the leaseオープン
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
callstackincubator/simlock#983 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
iOS simulators can live in Xcode's device set (drivers.ios.deviceSet)対応中かも @V3RON が 1 日前に担当しました。 オープンtask:blocked
難易度 5/5 1週間以上 初心者へのやさしさ 38/100
callstackincubator/simlock#968 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
feature:planned
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
callstackincubator/simlock#962 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
request:new
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
callstackincubator/simlock#946 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
callstackincubator/simlock の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
grafana/profiles-drilldown#1212 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
grafana/traces-drilldown#980 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
openremote/openremote#3487 · コメント 1 件 ·
-
triage:needs-human
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
garrytan/gbrain#7635 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
coollabsio/jean#867 ·
メンテナーはふだん 1 日以内に返信