Reported issues for agent-device
Pod holds 18 of 27 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to agent-device.
Most discussed
iOS physical screenshot fallback calls devicectl with unsupported --device flag
Reproduction
On a connected physical iPhone, invoke:
agent-device screenshot /tmp/test.png --platform ios --device "x iPhone" --json --verbose
Actual
The fallback path logs:
devicectl device screenshot --device 00008150-12345 /tmp/test.png
Error: Unknown option --device
Usage: devicectl device ...
It then falls back to the XCTest runner. In this run the runner could not start because the attached iPhone was locked, but the devicectl invocation itself is invali
Read the thread · 2026-08-12 · closed · external user · 1 comment
Remote daemon rejects gzipped artifact uploads — every install fails with "Invalid tar header … needs to be gunzipped"
Summary
Since roughly 2026-08-10 23:40 UTC, every agent-device install against a remote (EAS-hosted) session daemon fails at the artifact upload:
Error (COMMAND_FAILED): Upload failed: {"ok":false,"error":"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?","code":"UNKNOWN"}
The CLI is fine. The daemon appears to have lost gzip decompression for artifact uploads. It accepts an uncompressed tar of the same bundle, and rejects every gzipped one — which
Read the thread · 2026-08-11 · closed · external user · 2 comments
Remote daemon rejects gzipped artifact uploads — every install fails with "Invalid tar header … needs to be gunzipped"
Summary
Since roughly 2026-08-10 23:40 UTC, every agent-device install against a remote (EAS-hosted) session daemon fails at the artifact upload:
Error (COMMAND_FAILED): Upload failed: {"ok":false,"error":"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?","code":"UNKNOWN"}
The CLI is fine. The daemon appears to have lost gzip decompression for artifact uploads. It accepts an uncompressed tar of the same bundle, and rejects every gzipped one — which
Read the thread · 2026-08-11 · closed · external user · 2 comments
MCP channel ignores ~/.agent-device/config.json defaults (iosXctestrunFile): omitting the param on any tool call triggers the built-in runner build — even while an external-xctestrun runner for the same session is alive
Environment
- agent-device version: 0.19.3 (npm, latest at time of writing)
- Node: v24.15.0
- macOS: Darwin 25.4.0; Xcode: 26.6 (no Apple ID signed in — external xctestrun per #806, built manually with
CODE_SIGN_STYLE=Manual) - MCP client: Claude Code, server registered as
agent-device mcp - Device: physical iPhone 14
~/.agent-device/config.json:
{
"iosXctestrunFile": "/Users/<user>/.agent-device/apple-runner/external-manual/Build/Products/AgentDev
[Read the thread](https://github.com/callstack/agent-device/issues/1341) · 2026-07-20 · closed · external user · 1 comment
### MCP: devices and apps return a top-level array as structuredContent, which spec-enforcing MCP clients (e.g. Claude Code) reject — the tools are unusable even though the daemon executes them successfully
## Environment
- **agent-device version:** 0.19.3 (npm, latest at time of writing)
- **Node:** v24.15.0
- **macOS:** Darwin 25.4.0
- **MCP client:** Claude Code, server registered as `agent-device mcp` in `mcpServers`
- **Device:** physical iPhone 14 (also reproduces with no device connected — `devices` fails the same way)
## Description
When agent-device is registered as an MCP server in Claude Code, calling the `devices` or `apps` tools always fails on the client side with a schema validat
[Read the thread](https://github.com/callstack/agent-device/issues/1340) · 2026-07-20 · closed · external user · 1 comment
### Capacitor/WKWebView (iOS): no supported keyboard-dismiss / blur — web forms mis-tap under the keyboard
## Summary
First data point on driving a **Capacitor (WKWebView) iOS app** with `agent-device`. Full-fidelity accessibility snapshots work well; the one real gap is **keyboard handling for web forms** — there's no supported keyboard-dismiss or programmatic blur, so elements sitting under the on-screen keyboard mis-tap and text routes into the wrong field.
Environment: `agent-device` **0.17.2**, iOS **26.5** / Xcode **26.5**, iOS Simulator, a Capacitor app (Next.js static export in a WKWebView)
[Read the thread](https://github.com/callstack/agent-device/issues/1298) · 2026-07-16 · closed · external user · 1 comment
### Add trigger-screenshot command to simulate iOS screenshot notification
## Problem
There is currently no way to programmatically trigger iOS's `UIApplication.userDidTakeScreenshotNotification` through agent-device. The existing `screenshot` command captures a screenshot image to a file (via `xcrun simctl io screenshot`), but it does **not** fire the in-app screenshot notification that iOS apps can observe.
Many iOS apps use this notification to trigger in-app behavior — for example, bug reporters, feedback tools, or annotation overlays that activate when a user ta
[Read the thread](https://github.com/callstack/agent-device/issues/123) · 2026-02-25 · closed · external user · 4 comments
### iOS snapshot not retrive TouchableOpacity element in a React Native app
When running `agent-device snapshot` on iOS, the output does not include any information about TouchableOpacity components. This leads to incomplete UI data being captured, making it difficult to verify or test interactive elements through the snapshot.
Steps to reproduce:
Open a React Native app containing TouchableOpacity elements.
Run `agent-device snapshot`
Review the generated snapshot data.
Notice that the TouchableOpacity elements are missing from the snapshot output.
Expected behav
[Read the thread](https://github.com/callstack/agent-device/issues/30) · 2026-02-09 · closed · external user · 2 comments
## Most recent
### No clear-field primitive: `fill @ref ""` is rejected and `keyboard` has no delete verb
**Environment.** agent-device 0.20.10 (local npm install, not `npx`), macOS Darwin 25.5, Xcode 26.6,
iOS 26.5 simulator, Node v23.10.0.
**Steps to reproduce.** With a focused, non-empty text field at `@e57`:
```bash
agent-device get attrs @e57 # {"value":"example.com", …}
agent-device fill @e57 ""
agent-device keyboard --help
Observed. Emptying a field is not expressible:
Error (INVALID_ARGS): Expected text to be a non-empty string.
Hint: Check command arguments and run --hel
[Read the thread](https://github.com/callstack/agent-device/issues/2063) · 2026-08-26 · closed · outside contributor · 0 comments
### replay cannot take a path against a remote daemon
## Summary
`replay <path>` resolves the path on the caller. Then it opens the file on the
**daemon**. A remote daemon shares no file system with the caller. So the command
fails with `ENOENT`, on a path the caller can read.
The result: `replay` does not work against a remote daemon.
## Why this matters
We drive a remote EAS Simulator session from a Linux GitHub Actions runner. Our
flow files are in the repository, which the runner checks out. The daemon host has
no copy of that repository.
[Read the thread](https://github.com/callstack/agent-device/issues/1802) · 2026-08-18 · closed · external user · 0 comments
### MCP channel ignores `~/.agent-device/config.json` defaults (`iosXctestrunFile`): omitting the param on any tool call triggers the built-in runner build — even while an external-xctestrun runner for the same session is alive
## Environment
- **agent-device version:** 0.19.3 (npm, latest at time of writing)
- **Node:** v24.15.0
- **macOS:** Darwin 25.4.0; **Xcode:** 26.6 (no Apple ID signed in — external xctestrun per #806, built manually with `CODE_SIGN_STYLE=Manual`)
- **MCP client:** Claude Code, server registered as `agent-device mcp`
- **Device:** physical iPhone 14
- `~/.agent-device/config.json`:
```json
{
"iosXctestrunFile": "/Users/<user>/.agent-device/apple-runner/external-manual/Build/Products/AgentDev
[Read the thread](https://github.com/callstack/agent-device/issues/1341) · 2026-07-20 · closed · external user · 1 comment
### MCP: devices and apps return a top-level array as structuredContent, which spec-enforcing MCP clients (e.g. Claude Code) reject — the tools are unusable even though the daemon executes them successfully
## Environment
- **agent-device version:** 0.19.3 (npm, latest at time of writing)
- **Node:** v24.15.0
- **macOS:** Darwin 25.4.0
- **MCP client:** Claude Code, server registered as `agent-device mcp` in `mcpServers`
- **Device:** physical iPhone 14 (also reproduces with no device connected — `devices` fails the same way)
## Description
When agent-device is registered as an MCP server in Claude Code, calling the `devices` or `apps` tools always fails on the client side with a schema validat
[Read the thread](https://github.com/callstack/agent-device/issues/1340) · 2026-07-20 · closed · external user · 1 comment
### AccessorySetupKit picker on physical iOS: system-modal snapshot detection is flaky, `alert` is capability-gated — querying `com.apple.AccessorySetupUI` directly works reliably
## Summary
On a physical iPhone, the AccessorySetupKit (ASK) accessory picker — a system sheet hosted out-of-process by `/Applications/AccessorySetupUI.app` — is only intermittently visible to `snapshot` (and therefore to `wait`/selector resolution), and `alert` is refused outright by the CLI capability gate. In the same experiment, querying the hosting process `com.apple.AccessorySetupUI` directly from the runner (without activating it) saw every element reliably and could tap them.
This curr
[Read the thread](https://github.com/callstack/agent-device/issues/1231) · 2026-07-13 · closed · outside contributor · 0 comments
### Fix public Apple platform parity in MCP output schemas
## Problem
The MCP output schemas for `boot` and `shutdown` use the internal `PLATFORMS`
enum (`apple | android | linux | web`), while the public command contracts and
runtime emit `PublicPlatform` (`ios | macos | android | linux | web`).
`prepare` has the same schema mismatch, although it is not MCP-exposed.
The current boot schema test checks required keys only, so an `ios` fixture
passes without validating enum membership.
## Scope
- Use the public platform vocabulary in public command ou
[Read the thread](https://github.com/callstack/agent-device/issues/1219) · 2026-07-12 · closed · outside contributor · 0 comments
### Fix public Apple platform parity in MCP output schemas
## Problem
The MCP output schemas for `boot` and `shutdown` use the internal `PLATFORMS`
enum (`apple | android | linux | web`), while the public command contracts and
runtime emit `PublicPlatform` (`ios | macos | android | linux | web`).
`prepare` has the same schema mismatch, although it is not MCP-exposed.
The current boot schema test checks required keys only, so an `ios` fixture
passes without validating enum membership.
## Scope
- Use the public platform vocabulary in public command ou
[Read the thread](https://github.com/callstack/agent-device/issues/1219) · 2026-07-12 · closed · outside contributor · 0 comments
### Pair output budgets with workflow success and recovery benchmarks
## Problem
PR #1174 added deterministic per-surface output budgets and actionability floors, including the
combined MCP text + structured payload. The remaining gap is a representative workflow-level
oracle: a smaller response can still cost more if it causes an extra observation, retry, or
re-orientation after an error.
## Scope
Add a focused, recorded routine-workflow benchmark that pairs output cost with successful next-step
behavior:
- `snapshot -i` and unchanged-snapshot suppression;
-
[Read the thread](https://github.com/callstack/agent-device/issues/1180) · 2026-07-10 · closed · outside contributor · 1 comment
### fix(mcp): settle digest responses must retain refs for auto-pinning
Follow-up from PR #1106 / #1101 code review. MCP ref auto-pinning breaks when `responseLevel: digest` is used with `--settle`.
## Problem
`interactionSettleView` (digest level) drops `settle.diff.lines` and keeps only `summary`, but `mergeSettleIssuedRefPins` collects refs exclusively from `lines`. MCP clients receive `settle.refsGeneration` but never record pins for added-line refs, so the next `@ref` command goes out unpinned and stale-ref warnings return.
Snapshot digest already solved thi
[Read the thread](https://github.com/callstack/agent-device/issues/1124) · 2026-07-06 · closed · external user · 1 comment
### fix(mcp): settle digest responses must retain refs for auto-pinning
Follow-up from PR #1106 / #1101 code review. MCP ref auto-pinning breaks when `responseLevel: digest` is used with `--settle`.
## Problem
`interactionSettleView` (digest level) drops `settle.diff.lines` and keeps only `summary`, but `mergeSettleIssuedRefPins` collects refs exclusively from `lines`. MCP clients receive `settle.refsGeneration` but never record pins for added-line refs, so the next `@ref` command goes out unpinned and stale-ref warnings return.
Snapshot digest already solved thi
[Read the thread](https://github.com/callstack/agent-device/issues/1124) · 2026-07-06 · closed · external user · 1 comment
The remaining reports are on [the project's issue tracker](https://github.com/callstackincubator/agent-device/issues).