> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onlook.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How Onlook keeps your code safe

> Exactly what Onlook does with your codebase, and what it never does.

Onlook works on a copy of your code, on your Mac, and nothing reaches your team's repository until you say so.

## The three promises

<CardGroup cols={1}>
  <Card title="Your code stays on your computer">
    Your project files never touch Onlook's servers. The AI sees only the context it needs, through your own Claude or ChatGPT account.
  </Card>

  <Card title="You decide what ships">
    Nothing reaches your team's repository until you send it.
  </Card>

  <Card title="Edits happen on a copy of your codebase, locally">
    Onlook works in its own copy, on its own branch. Your original files stay as you left them.
  </Card>
</CardGroup>

## What "a copy" means

When you choose a folder, Onlook makes a separate copy of your code in its own folder on your Mac. It also makes a new branch for that copy, based on your main branch.

* **Your files are untouched.** Onlook never edits, moves or commits the files in the folder you chose. The copy is a git worktree, so your repository's git records list its branch. When you remove the project from Onlook, that branch stays in your repository.
* **The agent only works in the copy.** Onlook refuses to run the agent anywhere else.
* **The copy lives in Onlook's data folder**, under `~/Library/Application Support/Onlook Studio/workspaces`.
* **If Onlook can't make a copy, it stops.** It never falls back to working in your folder.

If your folder isn't a git repository yet, Onlook sets up git in its copy only.

## What leaves your Mac

This is the full list:

* **Context sent to the AI you signed in to.** To make a change, the agent sends the parts of your code it needs to Claude or ChatGPT, under your own account. That's the same as using those tools directly.
* **Your pushes and pull requests to GitHub,** and only when you approve them.
* **Usage events to Onlook,** such as which features you use. After you sign in, they're linked to your email address. They never include your code, file paths, prompts, or repository or branch names.
* **Diagnostic logs and error reports,** so we can fix what breaks. They follow the same rule: no code, prompts or file paths.
* **Reports you choose to send** with **Send feedback**: your message, your Onlook version and an anonymous ID. Nothing from your project.
* **Your email address,** which you enter when you sign in.

## Environment files

Most apps need a `.env` file to run. To start your app the way it starts for your engineers, Onlook copies the `.env` files your repository already ignores into the copy. Git keeps ignoring them there, so they stay out of commits.

If your folder wasn't a git repository, Onlook also tells git in its copy to ignore `.env` files, keys and build output.

## What needs your approval

With Claude, the agent always asks before it:

* pushes to GitHub
* creates or merges a pull request
* force-pushes, deletes a branch or throws away work with a hard reset

This holds in every [permission mode](/setup/ai#permission-modes). Each request appears in the chat as a card with **Approve** and **Deny**.

In the default **Auto** mode, reading and editing files in the copy doesn't need approval, because nothing leaves the copy until you push. To approve every edit too, choose **Ask**.

With ChatGPT, the agent runs with **Full access**, so it doesn't stop to ask before these. Everything it does still happens in the copy, and each step shows in the chat.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.