atonom eval -c 'return 1' --json. status checks the platform API only.
CLI not found
Install the binary supplied by the Atonom team and make sure its directory is on your shell’sPATH. If you used the macOS installation steps, add $HOME/.local/bin to PATH and open a new terminal. See Install & connect.
Missing base URL or sandbox URL
Setbase_url for platform commands and lua_service_url for eval. Check for higher-priority environment variables or flags. Local config is selected from the nearest ancestor workspace, so confirm the reported workspace_root.
401: credentials rejected
Runatonom login for the configured host. If ATONOM_TOKEN is set, it overrides device credentials and is not refreshed. Remove or replace the expired override. Do not expose the token while diagnosing the environment.
403: permission denied
Your account needs permission to edit Lua tools. Confirm that you are signed in to the correct Atonom environment and ask your administrator to check your access.404: tool or service not found
Check your Atonom URL and verify that the tool ID appears inatonom list. If the error persists, contact the Atonom team with your CLI version, the command that failed, and the error message. Do not include credentials.
No Atonom agents / multiple Atonom agents
Creating a tool requires an existing Atonom agent. If none is available, create one through the platform. If there are several, choose one interactively or pass--comm-agent-id ID; JSON mode cannot prompt for a selection.
Pull succeeded but my file did not change
Inspectresults[].action. skipped-local-edits means your local file was protected. skipped-no-script means the tool has no stored script body. Pull can exit zero in both cases. Back up edits before intentionally forcing an overwrite.
File is not linked / no local file
Use the tool ID fromatonom list, then atonom pull ID. For a deliberate new local file, pass --tool-id ID. Keep files inside scripts_dir to persist their links. eval needs an actual file path relative to your current directory, even when run accepts a bare scripts-directory filename.
409: remote changed
Someone changed the remote since your last sync. Preserve local edits, inspectdiff, refresh the baseline, and reapply the changes. Follow the conflict workflow. A default run is not a conflict-resolution mechanism.
Eval returns null instead of my transform result
A raw chunk that only definestransform does not call it. Add --transform '{...}'. For a raw chunk, return the intended value at top level. Do not combine a top-level return with the transform wrapper.
Exit 2: FAIL / script error
Inspectoutcome.error for eval or error for run. Check syntax, required keys, value types, missing libraries, and resource limits. A code 2 with usage text instead of JSON is an argument-parser error. A failed default run may already have saved the script; inspect saved.
Exit 3: unanswered trap
Provide a--trap-result for every expected host call in order. Inspect unanswered_trap for the missing call. If the cap was reached, verify loop termination before raising --max-traps. --trap-echo can test wiring but may not match a real capability’s response shape.
Empty arrays become objects / null disappears
Useatonom.json.array() for an empty array and atonom.json.null for a null table field. Empty {} is an object, and assigning nil removes the field.
Eval passes but platform execution fails
Mocks do not validate live capability availability, permissions, schema configuration, or external behavior. Confirm the stored script is current, the input schema matches, and the owning agent has the required capabilities. If the same inputs still behave differently, share the script and error with the Atonom team.Timeout or connection refused
Check your sandbox URL and follow the connection instructions supplied by the Atonom team. An HTTP timeout (--timeout-secs, default 120) differs from the sandbox’s CPU limit. Raising it will not fix an infinite loop, memory exhaustion, or a missing service.
