You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
User feedback (local-environment, client project):
I had tons of issues with agent-device always trying to open iPhone simulator (default) when I really wanted the session to be scoped to a particular iPad only when I was working with real client's project. Solved it by wrapping every agent-device command with my custom bash script. I think simlock might be a good tool to enforce that.
Today the only way to target a specific device is to pass --platform/--device/--udid/--serial on every invocation. When an agent (or human) forgets, inventory selection falls back to its booted-device heuristics and picks the default iPhone simulator — on a client project that is not a nuisance but a correctness failure. Users are resorting to wrapper scripts to enforce scoping.
This is adjacent to but distinct from #1320: device claims fence other worktrees' daemons off a device; they do nothing to stop your own commands from selecting the wrong device. Enforcement of user intent at selection time is the missing piece.
Proposal
A workspace-scoped device pin that both defaults and enforces:
A pin source, in precedence order: env (AGENT_DEVICE_PIN-style selector) and/or a per-workspace config the daemon/CLI reads from the project root. The repo currently has no project config file surface, so the env form may be the v1.
Selector-less commands inherit the pin: open com.example.app targets the pinned iPad, never the default iPhone.
With a pin set and no selector flags, every device-targeting command resolves to the pinned device or fails if it is unavailable — it never falls back to another device.
A conflicting explicit selector fails with a structured error naming the pin, its source, and the pinned device.
No wrapper scripts required: the pin is honored by open, sessionless mutations (boot, install, ...), and inventory-based selection alike.
Motivation
User feedback (local-environment, client project):
Today the only way to target a specific device is to pass
--platform/--device/--udid/--serialon every invocation. When an agent (or human) forgets, inventory selection falls back to its booted-device heuristics and picks the default iPhone simulator — on a client project that is not a nuisance but a correctness failure. Users are resorting to wrapper scripts to enforce scoping.This is adjacent to but distinct from #1320: device claims fence other worktrees' daemons off a device; they do nothing to stop your own commands from selecting the wrong device. Enforcement of user intent at selection time is the missing piece.
Proposal
A workspace-scoped device pin that both defaults and enforces:
AGENT_DEVICE_PIN-style selector) and/or a per-workspace config the daemon/CLI reads from the project root. The repo currently has no project config file surface, so the env form may be the v1.open com.example.apptargets the pinned iPad, never the default iPhone.devices/doctorsurface the active pin so agents can discover why selection is constrained.--helptext must teach the escape hatch (edit/unset the pin), not invite per-command overrides that defeat the point.Non-goals
Acceptance
open, sessionless mutations (boot,install, ...), and inventory-based selection alike.