The agent works on the text
you have not saved yet.

An agent in a terminal reads files off the disk. It cannot see the paragraph you are halfway through rewriting, because that paragraph does not exist anywhere but in the editor. Linelark Studio runs Claude Code in the right dock and hands it the editor itself — through a small MCP server the window opens for that session.

Studio 1.17.1 · macOS 14+8.5 MB download
Linelark Studio with the Claude panel in the right dock, its calls into the editor’s open tabs listed as it answers
The agent reading the tabs above itStudio 1.17.1 · macOS 14+

What the editor puts on the socket.

A Unix domain socket at 0600, JSON-RPC over it, and a tool list scoped to one window. The same socket path is exported into the terminal panel as $LINELARK_MCP_SOCKET, so a claude you start yourself in a shell gets the same tools the dock has.

01

One server per window, not one per app

The tools answer for the window whose session called them. The front window follows your clicks, so an app-wide server would let “the active tab” drift to a file the asking session has never seen.

02

It reads the buffer, not the file

open_tabs, active_buffer, selection, read_lines and tail_lines answer from the text in the editor, unsaved edits included. That is the difference worth having: the disk is a stale copy of what you are actually working on.

03

find_in_buffer is the find bar’s own engine

A search runs through FindEngine over the buffer as typed, rather than over the last version written out. It is the reason to ask the editor instead of running grep in a shell.

04

Edits land as one undo

replace_lines and insert_lines go through the same editor session a plugin’s writes do, so an agent’s change is one undoable edit that reaches every pane showing that buffer. ⌘Z puts it back, and you decide when to save.

05

The approval card is an MCP tool too

A headless agent has no terminal to ask in, so Claude Code’s permission prompt is pointed at a tool of ours and the approve or deny is drawn in the dock — carrying the diff the buffer would become rather than the name of the tool asking.

06

Reads are ranged and capped

Every read takes a range and has a ceiling. Without one, a 40 MB buffer arrives in a context window whole.

Most of what it is asked is not code.

This is a notepad before it is an IDE, and the agent inherits that. Each of these is a real shape of request; what follows it is which tools answer it and what you are shown.

  • Tidy a list into a table
    “Format the messy list in my active tab as a clean Markdown table.”
    active_buffer reads the tab as it stands. The rewrite comes back as a card carrying the diff, and the tab does not change until you approve it.
  • Convert every date in a document
    “Find every date written MM/DD/YYYY in this document and convert it to DD/MM/YYYY.”
    find_in_buffer locates them in the text as typed — including the ones you added a minute ago and have not saved — and the replacement arrives as a single undoable edit rather than as thirty of them.
  • Compare two things on screen
    “Both open tabs describe the same release. Tell me where they disagree.”
    open_tabs lists what the window has and read_lines fetches each side, so the comparison is between the two documents in front of you, saved or not.
  • Look through a folder of notes
    “Go through the notes in this folder and tell me which ones I left half-written.”
    This one reaches past the editor. Nothing on the socket reads a directory, so it needs Claude Code’s own file tools — which the panel only has under the second trust setting below.

The two trust settings, side by side.

Preferences ▸ Claude sets it for the app; the panel’s ⚡ menu overrides it for one window. Read-Only is the default and updating never moves you off it.

Read-OnlyClaude Code’s own rules
The editor’s MCP readsPre-approved by the installerPre-approved by the installer
Changing an open bufferA card with the diff, approved by youA card with the diff, approved by you
Running a command, reading a folder, writing a fileNot among its tools at allWhatever your own settings.json already says
Who decides the permission modeLinelark pins itYour ~/.claude/settings.json, an auto-approving mode included
Built-in Edit and WriteAbsentPresent, and they write to disk rather than to the buffer
The MCP servers in your ~/.claude.jsonNever loadedNever loaded

Read from the Linelark Studio 1.17.1 source, not from its documentation. Where the two disagree, this is the one that ships.

What you are agreeing to, at each setting.

The first setting is narrow on purpose and the second one is genuinely wide. Both are described here as they are, because the difference between them is the only thing on this page worth getting right.

  • Read-Only is the default, and an update does not move youThe agent reads your buffers and proposes edits. The build, the tests and every other command are simply not among its tools, which is why an agent at this setting can hand you something to try but cannot check it.
  • The second setting hands over your own rules, not oursLinelark adds nothing on top of them: it pre-approves its own editor reads and never a built-in, so nothing here can approve a shell command on your behalf. What runs without asking is whatever is in the one file you can read back, scope to a project, or take away.
  • Built-in Edit and Write go to disk, not through undoUnder Claude Code’s own rules the agent has them. Such an edit is not one ⌘Z and was not shown to you as a diff first. A tab with no unsaved changes reloads itself; a tab with unsaved changes is left alone and asks you when the app next comes forward.
  • Your own MCP servers are not loadedUnder either setting the panel gets this window’s editor tools and nothing else. A server you configured for yourself is there for the claude you run in a terminal, not for the dock.
  • Studio onlyIt spawns a process and opens a socket, so the sandboxed Mac App Store edition has none of it — and the trust setting with it.
  • Nothing bounds what a session costsClaude Code is installed and billed separately, against your own account or provider. The running total is in the panel and in the titlebar, and every way a turn can start without you — after a save, after an open, on a timer — is off until you switch it on.

Open it on
your own files.

Apple-notarized, macOS 14 and newer, Intel and Apple silicon.

Download Studio 1.17.1 8.5 MB · every version, with checksums