Install
openclaw skills install safariControl Safari on macOS with AppleScript, safaridriver, screenshots, tab navigation, and real-browser read, click, and type workflows.
openclaw skills install safariUser needs the agent to control the real Safari browser on macOS, not a generic headless browser. Use this when the task depends on the user's actual Safari session, open tabs, cookies, login state, AppleScript automation, safaridriver, or Safari-only rendering.
Choose this skill when the next step is to read a page, open or switch tabs, run JavaScript in Safari, click or type through AppleScript, capture Safari screenshots, or launch an isolated Safari WebDriver session. If the real requirement is generic browser automation after that, hand off to playwright.
Memory lives in ~/safari/. If ~/safari/ does not exist, run setup.md. See memory-template.md for structure and starter files.
~/safari/
|-- memory.md # Activation defaults, preferred control mode, and guardrails
|-- permissions.md # Automation, Develop menu, and screenshot preflight state
|-- sessions.md # Real-session vs WebDriver session notes and target tabs
|-- snippets.md # Known-good AppleScript and shell patterns worth reusing
|-- recipes.md # High-value task recipes such as read, click, fill, capture
`-- incidents.md # Permission failures, blocked JS, and repeat breakages
Load only the smallest file needed for the current blocker.
| Topic | File |
|---|---|
| Setup guide | setup.md |
| Memory template | memory-template.md |
| Permissions and preflight checks | preflight-and-permissions.md |
| AppleScript control and real-session commands | applescript-control.md |
safaridriver, WebDriver, and BiDi usage | webdriver-and-bidi.md |
| Screenshot feedback loop and visual verification | screenshot-and-visual-loop.md |
| Failure patterns and recovery order | troubleshooting.md |
osascript, safaridriver, and screencapture available.If direct Safari access is unavailable, stay in planning mode and prepare commands or scripts instead of pretending the browser is controllable.
This skill covers two distinct control surfaces:
safaridriver, standard WebDriver clients, and Safari-specific validation without touching the user's daily tabs unless they approve it.Do not blur the two. Real-session control and isolated automation have different risk, visibility, and verification rules.
Keep only durable Safari operating context in ~/safari/:
safaridriver mode when the task should avoid their daily tabs or needs cleaner automation boundaries.safaridriver --enable has been run and the local driver starts cleanly.osascript can inspect and control the user's live Safari windows and tabs.safaridriver gives a cleaner automation boundary but does not automatically inherit the user's existing Safari tab state.applescript, macOS permission debugging to macos, generic browser scripting to playwright, and credential or WebAuthn logic to passkey.safaridriver as if it automatically controls the tabs the user already has open -> session assumptions go wrong fast.System Events without verifying Safari focus -> input lands in the wrong field or wrong app.This skill makes no external requests on its own.
| Endpoint | Data Sent | Purpose |
|---|---|---|
| None | None | N/A |
No data is sent externally.
Data that leaves your machine:
Data that stays local:
~/safari/This skill does NOT:
This skill ONLY:
safaridriverThis skill NEVER:
Install with clawhub install <slug> if user confirms:
applescript - Write safer AppleScript when Safari control moves beyond known-good snippets.macos - Handle Apple Events, Screen Recording, app focus, and native system diagnostics on Mac.playwright - Automate browser flows once the task no longer depends on the user's real Safari session.ios - Bridge Safari-adjacent workflows when the target moves to iPhone or iPad.passkey - Diagnose Safari sign-in and WebAuthn behavior without guessing at credential rules.clawhub star safariclawhub sync