Differential A11y β What Changed On Screen
After every UI action, Ghost appends a short differential accessibility report to the tool result β the elements that appeared and disappeared since the previous action. Instead of re-reading the entire screen tree to figure out what its tap did, the agent gets the delta for free.
A11y diff (since last action):+ 'Wi-Fi' (android.widget.TextView)+ 'Bluetooth' (android.widget.TextView)- 'Searchingβ¦' (android.widget.TextView)Up to 6 added and 6 removed entries are listed; the rest collapse to
+ β¦N more new / - β¦N more gone. Element identity is bucketed to a 40 px grid
so sub-pixel jitter doesnβt register as a change. The first action after launch
has no prior state (empty diff), and an action that changes nothing is silent β
only a real delta is appended.
Kill-switch
Section titled βKill-switchβDifferential a11y is on by default. Itβs fail-open: any error, or the kill-switch being off, yields an empty string, so the normal post-action screen-tree behavior is never disturbed.
# Disable it (kill-switch)export A11Y_DIFF_ENABLED=falseOne extra interactive-elements dump per UI action, cached per device. Read-only tools (screenshots, OCR) donβt update the baseline, keeping the diff strictly action-to-action. Works on the normalized element shape shared by Android and iOS.
Related
Section titled βRelatedβ- MCP Server β the tools whose results this annotates
- Device Context β the screen-reading layer