Troubleshooting
Unknown agent: <id>
- run
openpocket agents listto confirm the agent id - remember that omitting
--agentselectsdefault - if you moved config files manually, inspect
manager/registry.json
Target '<fingerprint>' is already bound to agent '<id>'
- another agent already owns that target binding
- run
openpocket agents listto identify the owner - either switch the other agent away from that target or choose a different target/AVD/device for the current agent
Target '<fingerprint>' is already in use by agent '<id>' (pid ...)
- another gateway process is actively holding the runtime target lock
- stop the other agent gateway before starting this one
- if the process crashed, retry after the stale lock is cleaned by PID liveness check
Gateway is running for agent '<id>' ... Stop it before switching deployment target
target setandtarget pairrequire the selected agent gateway to be stopped first- stop only that agent's gateway; other agents can continue running on their own targets
adb not found
- install Android platform-tools
- set
ANDROID_SDK_ROOT - verify
adbinPATH
Android emulator binary not found
- install Android Emulator via SDK manager
- configure
emulator.androidSdkRootorANDROID_SDK_ROOT
No AVD found
- run
openpocket emulator list-avds - create an AVD if list is empty
- set
emulator.avdNameto a valid entry - if you run multiple emulator agents, use different AVD names
Missing API key for model
- set
models.<profile>.apiKeyor matching env var (apiKeyEnv) - verify current
defaultModelprofile for the selected agent - remember that agent model configs diverge after
create agent
Task keeps failing with invalid model output
- inspect the selected agent session file for raw thought/action progression
- verify model supports requested endpoint and multimodal input
- switch model profile and retry
Aliyun UI Agent cannot fetch screenshot URL
- verify the selected model profile uses
backend: "aliyun_ui_agent_mobile" - ensure
humanAuth.useLocalRelay=true - if using managed agents, start the shared relay hub with
openpocket human-auth-relay start - if Aliyun must fetch over the public internet, verify ngrok/shared public relay URL is reachable from outside your LAN
- inspect logs for
[OpenPocket][human-auth],[OpenPocket][relay-hub], and local relay startup failures
Aliyun UI Agent keeps returning wait or unsupported operations
- inspect the selected agent session file for the raw
Operationstring returned by Aliyun - confirm the task is in
device_type=mobilescope and the current screen is an Android phone UI, not a secure/blank surface - if the screen is
FLAG_SECUREor blacked out, use the human-auth takeover path instead of retrying model calls - retry after enabling a public screenshot URL path (shared relay hub or ngrok), because stale/unreachable image URLs often degrade action quality
Channel bot does not respond
- validate token for the selected agent (
channels.<type>.*or env) - ensure the selected agent gateway process is running
- verify allowlist / mention policy for the specific channel
- if multiple agents share one group, ensure they are not all configured to answer every message
Manager dashboard does not show an agent
- verify the agent exists in
openpocket agents list - inspect
manager/registry.json - ensure the agent was created through
openpocket create agentor updated through manager-aware commands
Human-auth link is missing in channel reply
- ensure
humanAuth.enabled=true - ensure the agent gateway started with
humanAuth.useLocalRelay=true - check gateway logs for local relay startup failure (
[human-auth]) - use
/auth pendingto verify request creation even when the web link is unavailable - if running PermissionLab E2E, use
openpocket test permission-app run --chat <id>so gateway sends auth link automatically
Shared relay hub / ngrok URL does not come up
- run
openpocket human-auth-relay start - verify
humanAuth.tunnel.provider=ngrokandhumanAuth.tunnel.ngrok.enabled=truein the selected config used to launch the hub - verify
NGROK_AUTHTOKEN(orhumanAuth.tunnel.ngrok.authtoken) is set - confirm
ngrokexecutable exists in PATH or sethumanAuth.tunnel.ngrok.executable - inspect hub logs for
[OpenPocket][relay-hub]and[human-auth][ngrok]startup errors - if error contains
ERR_NGROK_108, terminate other ngrok agent sessions and retry
Managed agent falls back to direct local relay unexpectedly
- this means the private per-agent relay started, but registration to the shared relay hub failed
- verify
openpocket human-auth-relay startis still running - inspect the gateway logs for
relay hub unavailable for agent=...; using direct local relay - verify the port in
manager/ports.jsonmatches the running hub
Human-auth request always times out
- check phone can reach
humanAuth.publicBaseUrlor the relay hub public URL - if LAN mode, verify host/port reachability from phone network
- if ngrok mode, verify tunnel URL is active and not blocked
- increase
humanAuth.requestTimeoutSecwhen approvals need more time - check the selected agent relay state file for pending/expired records:
state/human-auth-relay/requests.json
Web page camera says permission denied after Allow
- some in-app browsers may block camera access
- use upload fallback instead
- or approve/reject without image when the flow does not require a camera artifact
Delegated artifact was approved but flow did not resume correctly
- inspect the selected agent session file for
delegation_result=...anddelegation_template=... - ensure app UI has an active focused input field for text delegation
- for image delegation, confirm app picker can access
/sdcard/Download - rerun with a deterministic case (
camera,location,sms) before app-specific flows
Invalid manager registry JSON ... / Invalid manager ports JSON ...
- a manager metadata file is corrupted
- OpenPocket will now fail explicitly instead of silently resetting it
- restore the file from backup or fix the JSON manually
- do not delete
manager/registry.jsoncasually if you want to preserve managed-agent metadata
Scripts blocked unexpectedly
- inspect
result.jsonandstderr.login the selected agent run directory - confirm command is in
scriptExecutor.allowedCommands - check deny patterns (for example
sudo,shutdown,rm -rf /)
Gateway logs are too noisy (or too quiet)
- set
gatewayLogging.leveltowarn(quiet) ordebug(verbose) - tune module switches under
gatewayLogging.modules - if payload fields appear hidden but you need them temporarily, set
gatewayLogging.includePayloads=trueand keepmaxPayloadCharssmall
