Skip to main content

Error Codes

This page is the canonical error code reference for Otto. Each code is emitted in error envelope payloads. Use the Retryable column to determine if automated retry is safe; use the Action column for immediate remediation.

Auth errors

CodeRetryableAction
missing_access_tokenNoAcquire or pair tokens before sending commands
invalid_access_tokenYesRefresh tokens with otto client login, then reconnect
role_mismatchNoUse a token with the correct role for this endpoint
unauthenticatedNoComplete helloauth handshake before sending commands
acl_missing_node_grantNoGrant controller access to node in extension popup or via POST /api/controller/access

Validation errors

CodeRetryableAction
missing_target_nodeNoSet targetNodeId on every command envelope
missing_tab_sessionNoProvide tabSessionId for tab-scoped commands
invalid_command_input_typeNoFix field types to match declared inputFields schema
missing_command_inputNoProvide all required fields declared in inputFields
missing_command_input_one_ofNoProvide at least one field from inputAtLeastOneOf list
unexpected_command_inputNoRemove keys not declared in inputFields

Routing and execution errors

CodeRetryableAction
node_offlineYesRe-resolve connected nodes and retry
site_mismatchNoNavigate tab to the correct site, or reopen with primitive.tab.open
tab_url_not_readyYesRetry after a short delay; URL not yet committed to Chrome tab
preload_host_mismatchNoValidate preloadHost path; check for site redirects or interstitials
manual_login_requiredNoLog in manually in the browser tab, then rerun the command
unknown_siteNoCheck supported sites with otto commands list
unknown_commandNoCheck available commands with otto commands list --site <site>
unknown_tab_sessionNoReopen a managed tab with primitive.tab.open

Lock and timeout errors

CodeRetryableAction
tab_busyYesRetry with bounded backoff, or switch to waitPolicy: wait_with_timeout
tab_lockedYesRetry after lock lease expires
queue_wait_timed_outYesIncrease timeoutMs, or reduce concurrent command contention
command_timed_outYesIncrease timeoutMs, or narrow the command operation scope
tab_queue_limit_exceededYesReduce concurrent commands on this tab session
rate_limitedYesReduce command throughput; check relay OTTO_RATE_LIMIT_PER_MIN setting
replay_rejectedNoGenerate a fresh replayNonce and updated timestamp
timestamp_out_of_windowNoSync system clock; timestamp must be within OTTO_REPLAY_WINDOW_MS of relay time
node_disconnectedYesRelay emits this when node drops mid-flight; retry after reconnect

Site-specific errors (Reddit)

CodeRetryableAction
reddit_user_not_foundNoValidate target username or user ID
reddit_user_unmessageableNoChoose an alternate recipient
reddit_rate_limitedYesBack off and retry
reddit_matrix_token_missingNoRe-authenticate Reddit page session
reddit_chat_send_unconfirmedNoVerify send state and rerun the command

Next steps