Accessibility Helper.
Optional companion app for richer text capture in terminals, IDEs, browsers, and chat apps.
If you installed Screengrep via the direct download or Homebrew, you already have the helper.
This page is mainly for users who installed Screengrep from the Mac App Store and want to add the helper after the fact. Open Screengrep's Settings → Modules → Accessibility Helper to check status.
TL;DR
Screengrep is sandboxed for Mac App Store distribution, and the macOS sandbox forbids cross-app Accessibility queries. The helper is a separate, unsandboxed Developer-ID-signed app whose only job is to read structured text from your focused window and feed it back to the main app. Without it Screengrep still works — it just falls back to visual OCR, which is noisier on small fonts (esp. terminal text). With it, you get exact characters and element semantics.
Download
Screengrep AX Helper for macOS
macOS 13 or later · Apple Silicon · ~10 MB
Notarized by Apple. Gatekeeper will let it open on first launch with the usual "downloaded from the internet" confirmation. If you'd rather build from source, the helper lives in the screengrep-helper directory of the main repo.
Install
- Open the downloaded
.dmgand drag Screengrep AX Helper into/Applications. - Launch the helper. It appears as
AXin your menu bar (small, no Dock icon). - macOS will prompt for Accessibility permission. Grant it: System Settings → Privacy & Security → Accessibility → enable Screengrep AX Helper.
- That's it. Screengrep ingests the helper's data on its next 5-second tick. You can verify in Screengrep → Settings → Modules → Accessibility Helper — the indicator turns green when the helper is running.
Why two apps?
What does the helper actually do that the main app can't?
It reads the macOS Accessibility tree of your focused window every two seconds — the same data screen readers use. That gives Screengrep exact text (no recognition errors), element types (Button, Link, TextField, MenuItem), URLs from every link, and the structural hierarchy of the window. It's a fundamentally different data source than the pixel-based OCR the main app does on captured frames.
For terminals, IDEs, code editors, and chat apps, the quality difference is dramatic — typically 95%+ accuracy vs. 75–85% from OCR on small fonts.
Why can't the main app do this directly?
The main Screengrep app is sandboxed — a hard requirement for the Mac App Store. The sandbox blocks cross-process Accessibility queries by design, even when the user has granted Accessibility permission. Apple Developer Technical Support has confirmed repeatedly that there's no entitlement to enable this and no helper-tool trick within a sandboxed parent.
The split — sandboxed main app + unsandboxed helper from outside the App Store — is the same pattern apps like 1Password 7 and Bartender historically used. The helper is a completely separate process; the two communicate through a shared App Group container that both apps can read.
Is the helper required?
No. Screengrep works fully without it — capture, OCR, audio transcription, search, everything. The helper is purely additive: install it whenever, remove it whenever. When the helper isn't running, Screengrep silently falls back to OCR-only text capture.
What data does the helper see, and where does it go?
The helper reads the accessibility tree of only your focused window
(whichever app is in front) every two seconds. It writes element role, title, value,
description, URL, depth, and screen position into a SQLCipher-encrypted file at
~/Library/Group Containers/group.app.oddie.screengrep/ax-staging.sqlite.
The main Screengrep app drains that file on its next tick and merges the data into its own encrypted index. No data leaves your Mac. The helper has no network code at all.
How do I uninstall the helper?
Click the helper's menu bar icon > Quit, then drag Screengrep AX Helper.app to the Trash. Screengrep stops getting AX data on the next tick and seamlessly falls back to OCR.
The shared container at ~/Library/Group Containers/group.app.oddie.screengrep is harmless to leave but can be removed manually if you want a clean wipe.