# Runtime evidence

Environment for both sides: Ubuntu 24.04.4 LTS, Linux 6.8.0-117-generic, x86_64; AppArmor enabled; kernel.apparmor_restrict_unprivileged_userns=1; no helper allow profile during comparison. Electron 44.10.1 under headless-desktop/Xvfb; 1280 x 800 client viewport; light theme; real built desktop and bundled server from each commit. Fresh isolated databases, T3CODE_DEV_SEED=0, no history imported. Authentication uses the injected Cursor API key rather than interactive sign-in.

Base: d91915db9e36b03450aa7d6dbd35ff27cb027ffe.
Head: db59a4d709519aad1b8dec4fb15df0da7c1d371b.

Same steps: add the same synthetic local folder as a project; add Cursor; select the reported model (configured through TARGET_MODEL_LABEL); select Auto; type teste; record; submit; await Provider error; submit teste again without changing permissions or host configuration; await second Provider error; dismiss the error banner for the final static capture.

Base: both submissions displayed: "The provider could not start this turn. Retry the turn; if it keeps failing, check the provider setup and server logs."
Head: both submissions displayed: "Cursor could not start its command sandbox. On Ubuntu 23.10+, AppArmor may block its helper; see https://github.com/pingdotgg/t3code/blob/main/docs/user/cursor.md. Otherwise, switch this thread to Full access."

Auto remained selected. Kernel audit records identified cursorsandbox userns_create followed by AppArmor DENIED for sys_admin under unprivileged_userns. No mocked provider failures or tests were used.

Private model labels are visually hidden by a CSS rule targeting only the model-picker button. Error text and permission controls are unchanged. Recordings show submission and repeat submission; screenshots show the final conversation with the banner dismissed. Before each uploaded still, two PNG captures 500 ms apart were byte-identical. All uploaded captures were opened and inspected; recordings were inspected through extracted contact sheets.

AI-assisted; verified with the tests and tools listed above.

Recovery (head only): with the same Ubuntu host, viewport, light theme, prompt, project, and Auto permission, loaded the profile from the new guide using apparmor_parser, restarted Electron and its bundled server, reopened the failed thread, and submitted teste. Two real turns completed with responses instead of sandbox errors. The recovery video shows the second successful submission. The kernel restriction stayed at 1 throughout recovery.

Scope: the real Electron app was built and launched directly, not packaged as an AppImage. Interactive Cursor browser sign-in and Windows-specific error wording were not exercised. The Full access alternative was displayed but not used. The test folder contains synthetic scratch material only.
