Blolabel
← Notes
analysis 8 min read

Memory hallucination causes 58.9% of MemGUI-Bench's non-timeout failures; phoneshell's screen memory is re-checked against the live tree before every tap, so it cannot hallucinate the same way

MemGUI-Bench names five distinct memory-hallucination failure modes and finds they account for 58.9% of its 11 evaluated agents' non-timeout failures on average, with Agent-S2's multi-attempt success falling 20 points when its long-term memory is removed. phoneshell persists its own cross-run screen memory to disk, but by design never acts on it until the remembered element is found again in the live accessibility tree.

MemGUI-Bench (arXiv:2602.06075), first posted 3 February 2026 and last revised 27 August 2026 by Guangyi Liu, Pengxiang Zhao and 13 coauthors, argues that mobile GUI agent benchmarks have mostly ignored memory: across existing benchmarks, only 5.2 to 11.8% of tasks require remembering anything from earlier in a session or a prior one, and none test cross-session learning at all. Their benchmark corrects for that directly: 128 tasks across 26 apps, arranged as 64 mirror pairs, with 89.8% of all tasks requiring retention across time or across a different part of the app than where the needed fact was shown. Eleven agents across five architectures were run through it with a three-stage "Progressive Scrutiny" evaluation pipeline and seven hierarchical metrics covering memory fidelity, learning effectiveness, and execution efficiency.

Abstract technical illustration on a dark grid: a glowing node labelled as a remembered fact with five thin fracture lines radiating from it into dim, broken fragments representing different hallucination failure modes, beside a second, separate closed loop where a similar node is shown looping back through a verification gate before reaching a stable, brighter endpoint, cool blues and teals with one amber accent

Five named ways to misremember a screen

The paper's failure-mode taxonomy gives memory failure five separate names rather than treating it as one undifferentiated bucket: Partial Memory Hallucination (PMH), Process Memory Hallucination (ProcMH), Output Memory Hallucination (OMH), Knowledge Deficiency (KD), and Intent Misunderstanding (IM). Averaged across the 11 agents tested, memory hallucination (the PMH/ProcMH/OMH group) accounts for 58.9% of every failure that was not a plain timeout. The gap this produces against a memory-light benchmark is largest for the smaller, GUI-specialised models: Agent-S2 falls from 54.3% on AndroidWorld to 27.3% on MemGUI-Bench, GUI-Owl-7B falls from 66.4% to 6.2%, and UI-Venus-7B falls from 49.1% to 5.5%. The paper's clearest controlled test of what long-term memory is worth comes from a 40-task ablation subset (its Table 3): removing Agent-S2's long-term memory entirely drops its three-attempt success rate (pass@3) from 45.0% to 25.0%, a 20-point fall, holding everything else about the agent fixed.

Agentpass@1pass@3Source
M3A32.8%47.7%arXiv:2602.06075 Table 2
Agent-S227.3%49.2%arXiv:2602.06075 Table 2
T3A22.7%42.2%arXiv:2602.06075 Table 2
GUI-Owl-7B6.2%10.2%arXiv:2602.06075 Table 2
Mobile-Agent-E5.5%10.2%arXiv:2602.06075 Table 2
UI-Venus-7B5.5%7.8%arXiv:2602.06075 Table 2
CogAgent0.0%0.0%arXiv:2602.06075 Table 2
Agent-S2, long-term memory removed (40-task subset)not reported25.0% (from 45.0%)arXiv:2602.06075 Table 3
MemGUI-Bench Table 2: pass@1 vs pass@3 across seven agents 0% 10% 20% 30% 40% 50% 32.8% 47.7% M3A 27.3% 49.2% Agent-S2 22.7% 42.2% T3A 6.2% 10.2% GUI-Owl-7B 5.5% 10.2% Mobile-Agent-E 5.5% 7.8% UI-Venus-7B 0.0% 0.0% CogAgent pass@1 pass@3 Source: arXiv:2602.06075, Table 2, read 16 October 2026. Two ways to use a remembered fact MemGUI-Bench's agents (generative recall) 1. agent recalls a fact from memory 2. agent acts on the recalled fact directly 3. no required re-check against live state 58.9% of non-timeout failures: PMH, ProcMH, or OMH (Partial / Process / Output Memory Hallucination) Agent-S2 pass@3 without long-term memory: 45.0% → 25.0% (40-task subset) phoneshell's memory.py (re-verified recall) 1. first visit: full perception, screen fingerprinted 2. control locations, labels, transitions saved 3. persisted to disk, keyed by app bundle id 4. later run: fingerprint re-loaded on sight 5. remembered control is resolved against the live tree before it is ever tapped 6. a transition that stops holding decays out structurally excludes PMH/ProcMH/OMH-style hallucination; cannot act on an unverified recall Sources: arXiv:2602.06075 Tables 2-3; phoneshell/memory.py, read 16 October 2026.

phoneshell remembers differently, and it is not attempting MemGUI-Bench's task

phoneshell's (github.com/Blomega/phoneshell) own memory system, phoneshell/memory.py, is not ephemeral. It writes a JSON file per app bundle ID to a persistent store (STORE = RUNTIME / "memory"), loaded fresh at the start of a run through _load(bundle_id) and written back through save(bundle_id), so what one run learns about an app's screens is still there on the next run, on a different day, started by a different task. What gets stored is narrow by design: a structural fingerprint of a screen (hashed after stripping volatile text like prices, timestamps, and the UUIDs and MAC addresses iOS bakes into some accessibility identifiers), the location and label of its controls, which action led to which screen and how reliably, and how long that screen takes to settle. The module's own docstring states the rule that governs all of it: "Nothing here is trusted blindly: a remembered control is still resolved against the live tree before it is tapped, and a transition that stops holding decays."

That rule is the structural difference from the failure mode MemGUI-Bench documents. Partial, Process, and Output Memory Hallucination, by the paper's own framing, are failures of an agent acting on a RECALLED fact that turns out not to match the current state. phoneshell's design makes that category close to impossible to trigger by construction, because a remembered control is never the basis for an action; it is only a candidate that still has to be found and confirmed in the live tree before anything happens. The tradeoff is scope, not correctness: phoneshell's memory only ever stores procedural, navigational facts about how a screen behaves, never declarative facts about what a user said, preferred, or was told earlier in a conversation. None of phoneshell's 80 tasks ask an agent to recall a preference stated three screens ago or in a previous session, the exact shape of MemGUI-Bench's 89.8% memory-intensive task pool. phoneshell would not hallucinate on that task category. It has never been asked to attempt it.

What it means for anyone building agent memory into a phone agent

Check it yourself

# phoneshell's own memory persistence and its re-verification rule
sed -n '1,30p' phoneshell/memory.py
grep -n "resolved against the live tree\|decays" phoneshell/memory.py

# confirm it persists across runs, keyed by app, not per-session
grep -n "STORE\|_load\|def save" phoneshell/memory.py

# MemGUI-Bench's own failure-mode taxonomy and tables
curl -s https://arxiv.org/html/2602.06075 | grep -i "hallucination"
# full tables: https://arxiv.org/html/2602.06075 (Table 2, Table 3, appendix A.8.1)

What would prove this wrong

We claim phoneshell's memory design structurally cannot produce Partial, Process, or Output Memory Hallucination because it never acts on a remembered fact without re-matching it against the live accessibility tree first. That claim is falsified if a future version of phoneshell/memory.py adds a code path that acts on a cached fact without a live re-check, or if an audit of a real run finds a tap executed against a stale, unverified memory record. We also claim phoneshell has no equivalent of MemGUI-Bench's cross-session preference or instruction recall. That is wrong the moment a phoneshell task asks an agent to recall something stated in an earlier, separate run and scores it. We will treat either event, checked by 31 March 2027, as grounds to revisit this comparison.

Sources