skills/auth-dialog-monitor/SKILL.md
macOS auth dialog monitor — auto-approves safe dialogs, escalates unknown ones to admin via SMS. Use when managing auth dialog auto-approve rules, investigating pending escalations, or approving/denying dialogs. Trigger words - auth dialog, permission dialog, approve dialog, escalation.
npx skillsauth add svenflow/dispatch auth-dialog-monitorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Monitors macOS authentication dialogs (SecurityAgent), auto-resolves safe ones via rule engine, and escalates unknown dialogs to admin via SMS with a CLI for resolution.
SecurityAgent dialog appears
↓
AuthDialogMonitor (~/dispatch/assistant/auth_dialog.py)
- Detects via PyObjC AX tree polling
- Traces provenance to SDK session via process tree
- Classifies via rule engine (config.local.yaml)
↓
┌────────────┬─────────────────┐
│ Safe rule │ Unknown/unsafe │
│ → auto- │ → escalate to │
│ approve │ admin via SMS │
└────────────┴─────────────────┘
↓
Admin replies → auth-dialog-approve CLI resolves it
Runs as part of the main dispatch daemon. Bus events logged to system topic.
~/dispatch/bin/auth-dialog-approve list # List pending escalated dialogs
~/dispatch/bin/auth-dialog-approve info <dialog_id> # Show dialog details
~/dispatch/bin/auth-dialog-approve approve <dialog_id> # Click OK/Allow
~/dispatch/bin/auth-dialog-approve deny <dialog_id> # Click Cancel
~/dispatch/bin/auth-dialog-approve always <dialog_id> # Approve + add auto-approve rule to config
Pending dialogs stored in: ~/dispatch/state/auth_dialog_pending.json
Resolution via PyObjC AXUIElement (no daemon IPC needed).
auth-dialog-approve approve <id> or deny <id>always to also add a permanent auto-approve ruleRules live in ~/dispatch/config.local.yaml under auth_dialog.auto_approve_rules:
auth_dialog:
auto_approve_rules:
- name: "homebrew installs"
app_pattern: "installer"
action_pattern: "install"
action: approve
- name: "my script"
app_pattern: "python"
action_pattern: "keychain"
action: approve
All patterns are regex, case-insensitive. Fields: app_pattern, action_pattern, dialog_type.
Config hot-reloads via SIGHUP — no daemon restart needed.
| Event | Topic | When |
|-------|-------|------|
| auth_dialog.detected | system | Dialog appears |
| auth_dialog.approved | system | Auto-approved by rule |
| auth_dialog.escalated | system | Sent to admin |
| auth_dialog.approved | system | Human approved |
| auth_dialog.denied | system | Human denied |
| auth_dialog.always_approved | system | Approved + rule added |
Search bus: cd ~/dispatch && uv run python -m bus.cli search "auth_dialog" --limit 20
password — requires password entry (APPROVE_WITH_PASSWORD if rule matches)allow_deny — simple Allow/Deny buttonsok_cancel — OK/Cancel buttonsalways command adds rule to config.local.yaml and auto-approves existing pending dialogapprove/deny will report "dialog not found"development
Use when building React/Next.js components, dashboards, admin panels, apps, or any web interface. Trigger words - react, frontend, ui, dashboard, component, interface, web app, polish, audit, design review.
tools
Track flight status and get FlightAware links. Use when asked about flights, flight status, arrival times, or flight tracking. Trigger words - flight, flying, UA, AA, DL, landing, arriving, departure.
development
Query real-time locations of people sharing via Find My. Look up where someone is, reverse geocode GPS coordinates, set up geofence alerts. Trigger words - findmy, find my, location, where is, geofence, track location.
tools
Access Figma designs via MCP or Chrome. Use when asked about Figma files, design mockups, wireframes, or UI designs. Trigger words - figma, design, mockup, wireframe, UI design, FigJam.