Skip to content

How to Use bigarrow: AI Agents Point on Screen

Show HN bigarrow hit hard: AI agents paint arrows, boxes, and text on your Mac. Install, skill setup, exit codes, and the gotchas tutorials skip.

5 min readBeginner

Your agent finished the refactor. You’re still hunting Allow

Drawing the overlay needs zero macOS permissions. Label lookup is what costs Accessibility – and that grant sticks to Terminal, Ghostty, VS Code, or Claude, not the bigarrow binary. Exit code 4 on day one usually means the launcher app is wrong, not a broken arrow engine.

The Show HN thread (about 368-410 points and 160+ comments within roughly a day, as reported on launch) is full of airhorn jokes. Fine. If you run Claude Code or Codex on a Mac, the useful part is quieter: the model already knows the control label, but your eyes left the terminal. Allow, 2FA, CAPTCHA, pay wall – same failure mode.

Think of it like a sticky note slapped on the real pixel, not a second UI the agent “drives.” You still click. The note just stops the scavenger hunt.

Pro tip:bigarrow doctor before the first agent session. It names the app that needs Accessibility and lists displays. One fix beats mid-flow guessing.

What it is – and the hard no

big-arrow-on-the-screen (bigarrow) is an MIT Swift CLI plus a skill pack for Claude Code and Codex. README position is blunt: transparent overlay across displays and Spaces, click-through, no focus steal, no daemon, no menu bar, no account, no telemetry, no model inside. It points. It does not click, type, or capture. That refusal is the product.

Practical setup: two commands, then break exit codes on purpose

macOS 14+ with Homebrew (paths as of the project README):

brew install franzenzenhofer/tap/bigarrow
bigarrow install-skill
bigarrow doctor

install-skill writes Agent Skills into ~/.claude/skills and ~/.agents/skills. Source build: Xcode 16+, swift build -c release, binary at .build/release/bigarrow.

  1. Accessibility goes to the app that spawns bigarrow – terminal or IDE – never a fictional bigarrow.app.
  2. Smoke test: bigarrow point --at 400,300 --text "You are here". Default lifetime for point is ~8s, then it’s gone.
  3. Fail on purpose: bigarrow point --element "NoSuchLabel" --app "Safari". Exit 3 = target missing; 4 = permission; 2 = bad input; 0 = ok. Agents parse numbers cleaner than paragraphs.
  4. Inventory labels first: bigarrow elements --app "Finder" before you trust --element in a live flow.

Skill cost on the always-on description sits around ~182 tokens per the README; fuller instructions load when the agent actually points.

Advanced usage agents actually need

point is a poke (~8s). start returns immediately and holds longer (~300s default) until stop, timeout, owner process exit via CLAUDE_PID / BIGARROW_OWNER_PID, optional --close-button, or bigarrow stop --hook from your session cleanup. --duration 0 = no time cap. Crashed agent, fewer orphan overlays – that’s the owner-PID story in one line.

# Coordinates only - no Accessibility
bigarrow point --at 760,500 --text "Confirm this control" --color orange

# Copy chip on the sign ({{value}} → one-click copy)
bigarrow start --element "One-time code" --app "Google Chrome:Checkout" 
 --text "Paste {{otp-7f3a}} into the field" --color blue

# Hold, speak, manual close, then wipe
bigarrow start --window "Mail" --text "This window" --say --close-button
bigarrow stop --all

Targeting that shows up when you run agents for real: --at X,Y, --window App[:title], --element Label --app App, plus --follow, --until-click, --dry-run --json, --png. Style flags are urgency encoding for humans, not the model.

Chrome page DOM is the sharp edge. Turns out – official FAQ, checked October 2026 – --element inside page content needs Chrome started with --force-renderer-accessibility or VoiceOver on. Electron apps generally behave. Chrome’s toolbar is fine. Coordinates always work when AX inside the page doesn’t.

How much trust do you want in a glowing arrow when the agent already has a shell? That’s the real product question; the CLI only makes the handoff visible.

Limits that still bite

macOS only. No Windows/Linux build as of this writing. It will not press the button – on purpose – so payments and auth stay human-in-the-loop. Launch-era project on the HN wave; flags move, and early write-ups saw Homebrew-tap distribution more than a long tagged-release history.

Gotcha What happens What you do
Permission on wrong app Exit 4; AX targets never resolve doctor, enable Accessibility for the launcher
Chrome page labels --element misses DOM Force renderer accessibility, or --at
macOS 26 window titles --window App:title wants Screen Recording (+ Accessibility to raise unless you skip raise) Prefer plain app window, element, or coordinates when you can
Covered target Arrow waits until the control is visible again Let raise happen; don’t block it unless you mean to

Pulsing arrow CPU: about 1.4% on a CI runner via Core Animation (README claim). 104 automated tests ship with the project. When an arrow lands “almost” right, elements plus --dry-run --json beats eyeballing.

FAQ

Does bigarrow work with tools other than Claude Code and Codex?

Yes. Any shell can call the CLI. The packaged skill only auto-teaches those two.

Will an agent use arrows to hide Decline and trick me?

Not beyond what shell access already allows. Overlays self-terminate on duration and owner-PID exit; the tool still doesn’t create a new privilege boundary. Treat agent shell as full trust either way.

I installed it but arrows never appear on the right display / Space

README claims coverage for multi-display, full-screen, Stage Manager, and Spaces. If nothing draws: run doctor, confirm you’re on the same Space as the raised target, then prove the pipeline with bare --at so AX isn’t the variable. Still blank after that? Re-check which app holds Accessibility – launcher mismatch is still the common exit-4 path.

Next: brew install franzenzenhofer/tap/bigarrow && bigarrow install-skill && bigarrow doctor, fix the one Accessibility checkbox it names, then tell your agent: “When you need me to click, use bigarrow and put a full sentence on the sign.”