Privacy
Layout works on your Mac. On its own, it goes online for two things only, your license and updates, and never sends your windows, workspaces, or files. A diagnostics report leaves your Mac only when you send it. See What Layout sends.
What Layout stores
Section titled “What Layout stores”Layout keeps these files in ~/Library/Application Support/Layout/:
configuration.json: your workspaces, sections, layouts, and settings, your progress in the guided setup, and your work contexts. Work contexts include the folders, web addresses, app links, simulator settings, and terminal commands you enter.Terminal/: small scripts that open a workspace’s terminal commands in Terminal, kitty, or cmux, or show its tmux session. They hold the folder and the commands you gave the workspace, and only you can read or run them.recovery.json: the recovery journal. Before Layout moves a window out of sight, it writes the window’s title, the number macOS gives it, and its position here, so it can put the window back even after a crash. Entries are removed once their windows are restored.assignments.json: which workspace each open window belongs to, and where it goes there, so that after an update, a crash, or a quit, each window goes back to its workspace. Windows are known by the numbers macOS gives them and their app, not by their titles.browser-windows.json: for each workspace’s browser tabs, the tab addresses and the browser window that opened them, so the next launch reuses that window.terminal-commands.json: the terminal panes where Layout started a workspace’s commands, so that stopping the workspace can end them.configuration-before-import-and a date: a copy of your configuration, made each time you import one, in case you want it back.agent-sessions.json: the sessions shown in Agents, with their agent and session identifiers, workspace, project folder, status, timestamps and read state. It also keeps a task excerpt (the first line of a prompt, up to 160 characters), the latest question or status message, and the latest result message received from a hook. It does not contain the full conversation. Process identifiers used to focus a running app stay in memory.control.sock: the socketlayoutctltalks to Layout through. It carries nothing when you don’t use it.
It also keeps license.json: when your trial started, and the license key activated on this Mac with the date Polar last confirmed it.
These files stay on your Mac. The undo history of window moves and the diagnostic event log stay in memory only.
What Layout reads
Section titled “What Layout reads”With the Accessibility permission:
- Your windows: their titles, positions, sizes, and state (minimized, full screen), and the document path an app reports for a window. Layout uses them to place windows, and to recognize the editor window that already shows a project.
- Your browsers’ tab addresses, when you launch a layout with browser tabs: Layout checks whether a browser window already shows your tabs. It reads the addresses the browser reports, not the content of the pages.
- The Dock’s badges, their text only, such as “3”: to show a red dot on app icons in the Layout bar, the workspace switcher, and the Layout Overview, to mark the workspaces with a badged app, and to notify you when a badge grows. Layout reads the Dock every second while it’s active; it never reads the apps’ notifications themselves, nor what the Dock’s folders and stacks hold.
- The macOS menu bar’s own items, only their names and sizes: when you click the clock, Bluetooth, Wi-Fi, battery, or Control Center in the Layout bar, Layout presses the matching macOS item, which opens its menu. While the Layout bar is on, Layout also checks every 10 seconds whether Bluetooth is in the macOS menu bar, to show it only then.
Without any extra permission:
- Agent hook events, when you connect Claude Code, Codex or Cursor in Settings › Integrations or the guided setup: session and project identifiers, activity, question or completion messages, and the first line of a submitted prompt. Layout uses these to populate Agents and focus the session you select. Older hooks need Update to add activity and task excerpts; Layout does not change them automatically.
- What an agent asks permission for, from Claude Code’s and Codex’s permission requests: the command, the lines an edit changes, the address or the tool’s arguments, which the card shows with Deny and Allow, and Claude Code’s questions with their answers and previews and its plans, which the card answers and approves. Layout keeps them in memory while it waits for your answer; only the one-line message of the agent’s mark, such as “Needs your approval: git push”, is saved with the session, as for any question. Your answer goes back to the agent through its hook, on your Mac.
- App information: the names and icons of your installed apps, and the link types each app declares in its
Info.plist. Layout uses the link types to decide which apps get an app link. - Slack’s local state, in
~/Library/Application Support/Slack/storage/root-state.json, only at the moment you paste a Slack channel link, to find the ID of the Slack workspace. Layout never reads it when you switch workspaces. - Your tmux sessions, when you check Run in a tmux session in a terminal’s dialog: their names, folders, and when they were last used, as your tmux server lists them, so you can pick one. Listing them never starts tmux. See Terminals.
- Claude’s and Codex’s chat records, when a workspace gives them a project, and to list your projects in the guided setup and New Workspace from Project…: Claude’s session files in
~/Library/Application Support/Claude/claude-code-sessionsand Codex’s state database in~/.codex/, opened read-only. Layout reads them to find your projects and each project’s latest chat, and never changes them. See Claude and Codex chats. - Your projects’ folders: whether each one exists, which macOS answers without asking, and, outside the folders macOS guards, the folder’s icon, the
package.jsonwhose dev server Layout suggests for the workspace’s terminal, and the.gitfile of an agent’s git worktree, which names its repository. Layout opens no file in Desktop, Documents, Downloads, iCloud Drive, a cloud storage folder, or a removable or network volume on its own, so macOS doesn’t ask you to let it in: there, a folder shows the generic folder icon, no dev server is suggested, and a worktree’s repository is found from your workspaces’ folders. An app you add to a workspace from such a folder is the exception: Layout reads it as it reads any app, for its name and icon. - T3 Code’s records, when T3 Code runs Claude Code or Codex: the id of its local environment, in
~/.t3/userdata/environment-id, to open a thread in T3 Code, and, for a Codex session, the thread it belongs to in T3 Code’s state database,~/.t3/userdata/statev2.sqlite, opened read-only. Layout reads only which thread a Codex session is, never the threads’ messages, and never changes them. See T3 Code. - cmux’s log of its events, in
~/.cmuxterm/events.jsonl, when cmux has written one: which tabs and panes have a notification you haven’t read, the agent cmux saw in each pane, and the names and folders of its tabs and the folders of its agents. cmux leaves the notifications’ words out of it. Layout reads the lines cmux adds twice a second while it’s active, and never changes the file. See cmux. - The window list of macOS: window positions and layering, never their content. Layout uses it to follow a window while you drag it and to draw borders.
- Wi-Fi and battery status for the Layout bar: whether Wi-Fi is connected, not which network, and the battery level.
- Your Mac’s load, for the diagnostics: memory pressure, swap in use, and whether your Mac is running hot or in Low Power Mode, read after a slow switch and when you open Send Diagnostics…; and Layout’s own memory and processor use.
What Layout sends
Section titled “What Layout sends”- To Polar, for your license. Polar sells Layout and issues its license keys. Layout contacts it when you activate a key, about once a week while the key is active, and when you release a Mac. It sends the key, your Mac’s name as set in Sharing settings (so you can tell your Macs apart in the customer portal), a code derived from your Mac’s hardware ID (a one-way hash: the ID itself never leaves your Mac), and Layout’s version. During the trial, nothing is sent.
- To download.getlayout.app, for updates. Every hour, Layout downloads the list of its versions, and a new version when one is out, to install it when you restart Layout. The request says which version of Layout you run.
- To getlayout.app, when you send diagnostics. Only when you click Send in Send Diagnostics…: the report, which Show What’s Sent lets you read first, your message, and the contact you leave, if any. Only Layout’s developer reads it. getlayout.app keeps the report 30 days, then deletes it, and posts it with your message and contact to a private channel on Layout’s Discord server, where it stays until the developer deletes it. See Diagnostics.
- To getlayout.app, when you send feedback. Only when you click Send in Send Feedback…: your message, the kind you picked, the contact you leave, if any, and the versions of Layout and macOS. getlayout.app keeps none of it: it posts it to a private channel on Layout’s Discord server, where it stays until the developer deletes it. See Feedback.
Nothing else leaves your Mac: no telemetry, no analytics, and nothing about your windows, workspaces, or files unless you send diagnostics.
What Layout never does
Section titled “What Layout never does”- It never sends what it reads on your Mac on its own: your windows, workspaces, and files stay here unless you send diagnostics. Tab icons are drawn from the site’s initial, not downloaded, and there’s no telemetry or analytics.
- It never records your screen. It doesn’t ask for Screen Recording: the Layout Overview draws schematic desktops.
- It doesn’t ask for Full Disk Access.
- It never runs a command you didn’t give it. The only commands it runs are the ones you give a workspace’s terminal, typed into your own shell when you launch that workspace, never when you switch. Nothing else you type in a work context reaches a shell. To type them into Ghostty or iTerm2, Layout needs your permission to control that app, which macOS asks for once. In cmux, Layout uses that permission only to bring a notification’s tab and pane forward.
- It never changes your macOS settings, such as the option to hide the menu bar.
Diagnostics you send
Section titled “Diagnostics you send”Send Diagnostics… sends nothing before you click Send, and its Save to File… saves a JSON file where you choose, and nothing more. By default, window titles, document paths, terminal commands, and the part of each link after ? or # are replaced by aliases. The report includes the rest of your configuration as it is, with the folders of your work contexts and the rest of their links: click Show What’s Sent to read it first. See Diagnostics.
This website
Section titled “This website”getlayout.app counts its visits with Cloudflare Web Analytics, which sets no cookies and doesn’t follow you to other sites. It also counts clicks on Download and Buy: which button, which page, the date and your country, never your IP address or anything else that identifies you.
Download clicks also notify Layout’s developer on Discord, with the button, country and time. These alerts contain no IP address and stay in the channel until deleted.
The launch email
Section titled “The launch email”If you left your email on getlayout.app to hear about the launch, it’s kept with the date and the form you used, only to send you that one email.