Blog

Aug 13, 2026

Run a Claude Code AI Agent on Mac From Anything You Copy

Your Mac collects work all day. Routines hands any of it to a live Claude Code session: a copied line, a saved Reddit thread, or a goal in plain words.

Something you copied twenty minutes ago is usually the start of real work. A stack trace. A competitor's pricing URL. Three lines of spec a colleague pasted into Slack. On a Mac running Routines, you open your clipboard history, select that row, press Cmd+Enter, and a Claude Code session opens in your terminal with the copied text already sitting there as the first prompt. No retyping, no digging back through Slack for the exact error string.

That keystroke is one of five ways into the same thing: a real Claude Code session on your Mac, running under your own Claude Code sign-in.

The input is already lying around

Most of what you would hand an AI agent on your Mac has already passed through it today.

Your clipboard history holds every text row you copied, and any of them can become a prompt. Links you saved go into the Library as markdown notes you can read back later. Reddit threads are the interesting case there: generic scrapers see Reddit's empty JavaScript shell, so Routines recognizes a post link, including the /r/<sub>/s/<token> share links the Reddit app hands out, and pulls the post from Reddit's own endpoints, up to 200 comments, rendered as u/author: text under a Comments heading. Paste the link on the Mac, or share it from the Reddit app on your iPhone. Both land on the same note. The second capture stays in the list as its own row marked already saved, and opens the note the first one wrote. And when a meeting wraps, Routines extracts to-dos from it, so the follow-up you agreed to out loud is written down by the time you get back to your desk.

Then the same work starts again from zero, because the thing you captured lives in one app and the agent that could act on it lives in another.

Five ways to start the session

In your terminal. routines claude terminal "fix the failing test in this repo" --dir ~/code/api opens Claude Code in the terminal you actually use: iTerm, Ghostty, kitty, Warp or Apple Terminal. Add --tab for a tab instead of a window, where your terminal supports one. Terminals that hand off to your login shell invoke a bare claude resolved off your own PATH, so the session starts with the version you would get by typing it yourself.

In the browser panel. routines claude browser "cancel the unused seat on this billing page" --url <page> sends the instruction to the Claude extension's side panel in Chrome, Dia, Arc, Edge, Brave or Vivaldi. This is the mode for consoles, dashboards and account settings, the pages that only work when you are already signed in. The keyboard shortcut that opens the panel is read out of your own browser's settings, so if you reassigned it, Routines uses your assignment rather than a hardcoded guess.

As a goal. routines goal ship the docs update and confirm it is live opens a terminal session whose first message is /goal, which arms Claude Code's own stop condition so the session keeps working instead of stopping at a status report. Once the process table proves the session is genuinely up, Routines pastes a second message: an operating manual, covered below.

From the clipboard. Select a copied text row in the clipboard history and press Cmd+Enter, or click the terminal icon in the preview header. Routines hides the picker and opens a new Claude Code session on that text. Only text rows offer it, so images, files and bare hex colors stay out of the way.

By asking. Tell the assistant in chat, Telegram or Slack to start a session or to run something in the browser panel, and it calls the launcher itself. Turn on Safe computer tools first. Those two tools go to conversations only. Scheduled runs get a tool set without them, so a routine firing at 7am does not pop a window open on you.

What a goal session is actually told

The second message a routines goal session receives is a fixed briefing, and it is the most opinionated part of the feature. It tells the session to reach for the Claude browser panel whenever a task needs a page you are signed into, and to drive it with routines claude browser. It tells the session not to believe the panel: verify every browser action afterwards by screenshotting the screen with screencapture or by re-checking the state with curl or a CLI, because the panel's report of success is worth exactly as much as the screenshot that confirms it. It tells the session to poll in the background while slow external things land, like a deploy or a DNS change, rather than declaring victory early.

It also draws hard lines. The session must not type passwords, payment details or verification codes. It must ask before anything irreversible or paid. It must report at every meaningful state change, so a long-running goal is something you can glance at rather than something you have to babysit.

Checking on what is running

routines claude sessions lists the Claude Code processes running right now: pid, elapsed time, CPU, working directory and a preview of the last assistant message. Add --json to pipe it somewhere. It reads the process table and Claude Code's own transcripts, so it answers even with the Routines app closed, which is the opposite of the launch commands: those need the app running, because the app is what drives your terminal and browser.

Once a session is up, the routines CLI is also how it reads back what your Mac collected. routines memory search, routines todos, routines meetings list and routines outputs "<name>" --last give the session your working context instead of leaving it guessing.

What it needs before any of this works

Claude Code has to be installed and resolvable on the Mac, otherwise a terminal or goal launch tells you so plainly rather than opening an empty window. The browser mode needs the Claude extension installed in the browser profile you pick. Goal sessions, the browser panel and terminals Routines types into, like Warp, also need macOS Accessibility permission; Routines asks for it when a launch first needs it. The launcher is macOS only.

The delivery is local app automation: AppleScript for the terminals that support it, a plain launch for Ghostty and kitty, and for Warp and the browser panel a paste that borrows your clipboard and puts the previous contents back afterwards. What the session does after it opens is between Claude Code, or the browser extension, and Anthropic, under your own sign-in.

FAQ

How do I start a Claude Code session from something I copied?

Open the clipboard history in Routines, select a copied text row, and press Cmd+Enter (Ctrl+Enter works too). Routines hides the picker and opens a new Claude Code session with that text as the starting prompt. The terminal icon in the preview header does the same thing. Text rows only: images, files and bare hex colors do not offer it.

Which terminals and browsers does the launcher support?

Terminals: iTerm, Ghostty, kitty, Warp and Apple Terminal. Browsers: Chrome, Dia, Arc, Edge, Brave and Vivaldi, each needing the Claude extension installed in that browser profile. Safari is not in the catalog. All of it is macOS only.

What does routines goal do that a plain session does not?

It opens a terminal session whose first message is /goal, so Claude Code holds its own stop condition, then pastes a fixed briefing once the session is confirmed up. The briefing tells the session to use the Claude browser panel for pages you are already signed into, to verify browser actions with a screenshot or a curl or CLI check instead of trusting the panel's report, to poll in the background while slow external state lands, to ask before anything irreversible or paid, and never to type passwords, payment details or verification codes. The briefing text is fixed, not per-session.

Does the Routines app have to be running?

For the terminal, browser and goal launches, yes: the CLI asks the running app over a local socket, and the app drives the other apps. Listing sessions is different. routines claude sessions reads the process table and Claude Code's own transcripts directly, so it answers with the app closed.

Can a scheduled routine open a session while I am away?

The two launcher tools, start_claude_session and run_in_browser_claude, go to chat, Telegram and Slack once you turn on Safe computer tools. Scheduled runs get a tool set that leaves those two out, so a routine firing at 7am does not pop a terminal window open on you.

Does Routines see what the session does afterwards?

The launch itself is local automation: AppleScript for the terminals that support it, a plain launch for Ghostty and kitty, and a borrow-the-clipboard-then-restore-it paste for Warp and the browser panel. Once the session is open, its work runs through Claude Code or the browser extension under your own sign-in, not through Routines.

Can I hand a Reddit thread to a session?

Save it to the Library first. Routines recognizes a Reddit post link, including the /s/ share links the Reddit app emits, and fetches Reddit's own endpoints instead of the empty JavaScript shell a generic scraper sees, storing the post plus up to 200 comments as a note. Copy the part you need and press Cmd+Enter, or point the session at your notes with the CLI.

Related

Related posts

Try it on your Mac.

Routines keeps your notes, transcripts, and routine outputs as markdown and SQLite on your machine, where they stay unless you turn on Cloud Sync.

Download