{"record":{"id":"5b65d72301c803d7","repo":"stablyai/orca","slug":"element-value-is-not-settable","errorCode":null,"errorMessage":"element value is not settable","messagePattern":"element value is not settable","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"native/computer-use-linux/runtime.py","lineNumber":1121,"sourceCode":"            screen_point(bounds, operation.get(\"fromElement\"), operation.get(\"from_x\"), operation.get(\"from_y\"), from_node),\n            screen_point(bounds, operation.get(\"toElement\"), operation.get(\"to_x\"), operation.get(\"to_y\"), to_node),\n        )\n        action = {\"path\": \"synthetic\", \"actionName\": \"drag\", \"fallbackReason\": None}\n    elif tool == \"type_text\":\n        type_text(require_non_empty_string(operation.get(\"text\"), \"text\"))\n        action = {\"path\": \"synthetic\", \"actionName\": \"typeText\", \"fallbackReason\": None, \"verification\": {\"state\": \"unverified\", \"reason\": \"synthetic_input\"}}\n    elif tool == \"press_key\":\n        press_key(require_non_empty_string(operation.get(\"key\"), \"key\"))\n        action = {\"path\": \"synthetic\", \"actionName\": \"pressKey\", \"fallbackReason\": None, \"verification\": {\"state\": \"unverified\", \"reason\": \"synthetic_input\"}}\n    elif tool == \"hotkey\":\n        hotkey(require_non_empty_string(operation.get(\"key\"), \"key\"))\n        action = {\"path\": \"synthetic\", \"actionName\": \"hotkey\", \"fallbackReason\": None, \"verification\": {\"state\": \"unverified\", \"reason\": \"synthetic_input\"}}\n    elif tool == \"paste_text\":\n        paste_text(require_non_empty_string(operation.get(\"text\"), \"text\"))\n        action = {\"path\": \"clipboard\", \"actionName\": \"paste\", \"fallbackReason\": None, \"verification\": {\"state\": \"unverified\", \"reason\": \"clipboard_paste\"}}\n    elif tool == \"set_value\":\n        if not set_value(node, operation.get(\"value\", \"\")):\n            raise RuntimeError(\"element value is not settable\")\n        action = {\"path\": \"accessibility\", \"actionName\": \"setValue\", \"fallbackReason\": None}\n    else:\n        raise RuntimeError(\"unknown tool: \" + str(tool))\n\n    try:\n        snapshot = make_snapshot(\n            operation.get(\"app\", \"\"),\n            include_screenshot,\n            operation.get(\"windowId\"),\n            operation.get(\"windowIndex\"),\n        )\n    except Exception:\n        if operation.get(\"windowId\") is None and operation.get(\"windowIndex\") is None:\n            raise\n        action.setdefault(\"verification\", {\"state\": \"unverified\", \"reason\": \"window_changed\"})\n        snapshot = make_snapshot(operation.get(\"app\", \"\"), include_screenshot, None, None)\n\n    return {\"ok\": True, \"action\": action, \"snapshot\": snapshot}","sourceCodeStart":1103,"sourceCodeEnd":1139,"githubUrl":"https://github.com/stablyai/orca/blob/1136503c6a231a16dce8f921f6fadb63d181e8db/native/computer-use-linux/runtime.py#L1103-L1139","documentation":"Raised in the set_value branch of run_operation (runtime.py:1121) when set_value(node, value) returns False — meaning the node is None, is not editable text (or set_text_contents failed), and has no value interface (or set_current_value returned a falsy result). It signals that neither the editable-text nor the value API could write the value.","triggerScenarios":"Calling the 'set_value' tool against an element that is not an editable text field and exposes no AT-SPI Value interface (e.g. a label, a container, a disabled control), or against an editable field whose set_text_contents returned False and that lacks a value iface fallback.","commonSituations":"An agent targets a non-input element (div, span, image) believing it accepts a value; the element is read-only/disabled; the application does not expose a Value interface for a custom widget; node was not resolved (None) because the element index was stale.","solutions":["Re-run get_app_state, confirm the target element is editable/has a role like text entry, and use a fresh element index.","Use type_text or paste_text on a focused editable field instead of set_value for elements without a Value interface.","If the control is disabled, enable it (via its action) before attempting set_value."],"exampleFix":"// before\n{\"tool\":\"set_value\",\"element\":7,\"value\":\"hi\"}  // element 7 is a label\n// after: target a real editable text element, or type into it\n{\"tool\":\"click\",\"element\":12}\n{\"tool\":\"type_text\",\"text\":\"hi\"}","handlingStrategy":"validation","validationCode":"state = run_operation({\"tool\": \"get_app_state\", \"app\": app})\nnode_info = element_info(state, element_index)\nif not (node_info.get(\"editable\") or node_info.get(\"hasValue\")):\n    raise ValueError(\"element does not accept set_value\")\nop = {\"tool\": \"set_value\", \"element\": element_index, \"value\": value}","typeGuard":"def is_settable(state, element_index) -> bool:\n    info = element_info(state, element_index)\n    return bool(info.get(\"editable\") or info.get(\"hasValue\"))","tryCatchPattern":"try:\n    run_operation(op)\nexcept RuntimeError as e:\n    if \"element value is not settable\" in str(e):\n        op = {\"tool\": \"click\", \"element\": element_index}\n        run_operation(op)\n        run_operation({\"tool\": \"type_text\", \"text\": value})\n    else:\n        raise","preventionTips":["Target only editable/value elements for set_value; verify via get_app_state first.","Keep a type_text/paste_text fallback for non-value elements.","Use a fresh element index from a recent get_app_state to avoid stale-node None."],"tags":["computer-use","accessibility","atspi","input-validation","python"],"backgroundTag":null,"analyzedSha":"1136503c6a231a16dce8f921f6fadb63d181e8db","analyzedAt":"2026-08-12T23:15:58.167Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}