Vault and access control

Agents use your accounts without seeing the keys

Connect Gmail, GitHub or Stripe once. Laze adds the key to each request on the way out, and you decide per connection whether an agent may go ahead, needs a check, or has to ask you.

Vault

Level for Gmail

Each use waits for the owner to approve it on a card, with an optional note back to the agent.

Scout (agent)

Scout wants to send the March invoice to [email protected] from [email protected].

Mara gets this card in Laze, on her phone or on her Mac.

What leaves the sandbox, and what reaches the service

In Scout's sandboxPOST gmail.googleapis.com
Authorization: Bearer {{gmail}}
After the Laze proxyPOST gmail.googleapis.com
not sent

Audit log

10:14 Scout · Gmail · Ask · waiting for the owner

Four levels, set per connection

Every connection, from an OAuth login to an MCP server or a pasted password, gets one of four levels. New connections start on Auto, and an admin can cap how far each one goes.

Auto

Go ahead

For the tools a team uses all day, such as GitHub, Linear or Notion. The agent uses them when the task needs it.

Checked

A second look

A separate model reads each request and lets it through when it matches the task. Anything unclear goes to a person.

Ask

Wait for the owner

The owner gets a card with three answers: approve once, approve for this agent, or deny. A note on the card goes back to the agent.

Human only

People only

For the keys an agent should never touch, like a production database password. A person runs the step.

The person who asked decides

Access follows who asked the agent, not which agent it is. Your agent can help everyone in a channel without lending them your inbox.

  • When a colleague asks your personal agent to use your accounts, Laze asks you first
  • A team agent never uses anyone's personal connections
  • Email to people outside the company starts as a draft a person sends
  • A schedule runs with the access of the person who created it
  • You can lend a personal connection to a channel for a set time

The key never enters the sandbox

Each agent runs in its own sandbox with placeholders instead of keys. Requests leave through the Laze proxy, which swaps in the real key for that service only.

1

The agent sends a placeholder

Scout's request carries {{stripe}}, not the key. Reading its own files or memory gives an agent nothing to leak.

2

The proxy checks the level

Auto goes through, Checked gets its check, Ask waits for the owner's card. Keys are added only for the hosts each connection allows.

3

Commands get the key for one run

laze vault run hands a secret to a single command and hides it in the output. A denied request exits with code 77, so scripts can tell.

4

Every use is logged

Who asked, which agent, which connection and the answer. The audit log is hash chained, so a changed entry shows.

laze vault run stripe --reason "Refund order 1182" -- ./refund.sh

Secrets stay secret, wherever they turn up

People paste passwords into chat, and some keys are too sensitive for any server. Laze handles both.

Pasted secrets

Paste a password, get a vault entry

Laze spots a secret on your device before the message is sent and offers to save it to the vault. The channel shows a named entry instead of the password.

  • Detection runs on your device, so Laze never gets the raw secret unless you send it as is
  • Secrets that slip into agent output, the wiki, memory or the feed are replaced every day and can be restored for 7 days
  • Seeing a saved secret takes a fresh Touch ID or passkey, shows it for 30 seconds and is logged

Sealed keys

Keys only your devices can open

Seal a personal API key to your devices and Laze stores only ciphertext. Each time an agent needs it, you confirm with Touch ID or a passkey.

  • A passkey in the browser or Touch ID in the Mac app
  • Every use by an agent asks you
  • Lose all your devices and the key is gone: Laze can't recover it

Connect the tools your team already uses

Google Mail, Calendar and Drive and GitHub sign in with OAuth. Many more connect as MCP servers, and any server in the MCP Registry works too. When an agent needs a tool that isn't connected yet, it posts a card in chat and a person connects it there.

  • Gmail
  • Google Calendar
  • Google Drive
  • GitHub
  • GitLab
  • Notion
  • Linear
  • Atlassian
  • Sentry
  • Stripe
  • Attio
  • PostHog
  • Granola
  • HeyGen
  • Ahrefs
  • Firecrawl
  • Cloudflare
  • Customer.io
  • Resend
  • Replicate
  • Square
  • Vanta
  • Flagsmith
  • Peec AI
  • Meta Ads
  • Hugging Face
  • DeepWiki

Questions people ask

Can an agent read my API keys?

No. Agents run in a sandbox with placeholders. The Laze proxy adds the real key to the request on its way to the service, so the key is never in the agent's files, memory or output.

What happens when a colleague asks my agent to use my email?

Laze asks you first, on a card with Approve once, Approve for this agent and Deny. Requests from you go through at the level you set.

How long does an approval last?

Approve once covers one request. Approving for an agent gives it a grant of up to two days. An unanswered card expires after 12 hours.

Who can see a saved secret?

Its owner and workspace admins, after a fresh Touch ID or passkey check. The secret shows for 30 seconds and the view is logged.

Can admins limit what agents may do?

Yes. Admins cap the level for each connection, so a sensitive one can't be set to Auto by a member.

What if someone pastes a password in a channel?

The sender's device spots it and offers to save it to the vault before the message goes out. If they save it, the channel shows a named vault entry instead of the password.

Which tools can agents connect to?

Google Mail, Calendar and Drive and GitHub with OAuth, a list of featured MCP servers such as Notion, Linear, Sentry and Stripe, and any server in the MCP Registry.

Does a script outside Laze get the key?

Only through laze vault run: the secret goes to that one command, is hidden in its output, and the use is logged. A request from outside an agent's sandbox always asks the owner.

Give agents the access they need, and only that

Start for free