Zaru Get Zaru free

Guides

Give each Zaru run only the connections it needs

Also in: Español, Português, 日本語, Deutsch, Français, 한국어, 简体中文, Italiano, हिन्दी

Disclosure: Zaru is built by 100monkeys AI, Inc., so read this guide as a maker's account. It was drafted by one of our AI agents from the Profiles page of the Zaru documentation, read on 29 October 2026, and from the wording on this site, and reviewed by the company. Every rule and message quoted below is that page's own. Where it does not say how something works, we say so rather than describe it.

Once Zaru holds your mailbox, your calendar and a GitHub token, the question is which of them a given conversation, run or schedule may touch. A profile answers it in one choice: a named set of your connections and the tools they may use. A run with no profile and no chosen connections reaches none of them. This guide builds a profile, narrows its tools, and uses it in a chat, a schedule and an MCP client.

What a profile is

The docs: a profile is "your own named set of connections (a mailbox, a calendar account, a Carbon Forge (formerly Nuclear Notes) token, a GitHub token and so on, any number of any kind) with a list of the tools they may use, and optional defaults." The rule that makes it useful is printed above the list on the Profiles page itself: "A run, a schedule or an API key reaches only the connections a profile names. Without one it reaches none."

Step 1. Create an account and connect what you use

Press Get Zaru free; registering needs only a name and an email. Connect your email and calendar from the Vault, as the site describes. A profile can only list connections you already hold, so connect first.

Step 2. Open Vault, Profiles

The list lives at /vault/profiles and shows each profile with its connections and tool count. Press New profile. The same form edits a profile later.

Step 3. Name it after a job, and pick its connections

A name is 1 to 64 characters and unique among your profiles. Name it after the work, not the account: the docs' own sample is called "Fundraising". Then tick the connections the job needs; the form groups them by type. A connection you revoke or delete later stays listed as removed, and the profile says "A connection in this profile was removed."

Step 4. Narrow the tools

Each entry is an exact tool name, such as mail.reply, or a family written <family>.*, such as carbon-forge.*. An empty list means "All tools these connections allow". The docs' sample profile allows:

"tools": ["carbon-forge.*", "mail.draft", "mail.reply", "mail.list", "mail.read"]

The form marks a tool that waits for your approval with "Needs your approval". A profile only narrows: an entry your plan does not allow is refused with "A profile can only narrow the tools your plan allows; <pattern> is not one of them."

Step 5. Know what the profile does not change

A profile governs the tools of its connections' families: mail.*, calendar.*, and the provider's family for anything else, such as github.*. Tools like fs.*, cmd.run or web.* are not governed by a profile; the security context alone decides them. And an allowed tool still meets the approval gate. mail.send, mail.reply, mail.forward, mail.delete and mail.archive wait for your answer whatever the profile says. So a profile with mail.reply and not mail.send lets a run reply in a thread, each reply waiting for you, and refuses a new message at once.

Step 6. Add the defaults

Three optional fields save typing: a default repository, one of your git repository bindings; a default Carbon Forge workspace, used "when a Carbon Forge call names none"; and instructions for conversations on this profile, at most 4,000 characters. Zaru is told the profile's name, its workspace and your instructions.

Step 7. Choose it in a conversation

Open the conversation panel above the chat input. Its Context section lists None, then Profiles, then your connections by type. Choosing a profile clears chosen connections, and the line above the input reads "Profile: <name>". The profile is stored with the conversation, so later turns and the runs they start use it. A run carries one profile or chosen connections, never both: "Choose one profile, or choose connections without a profile; not both."

Step 8. Use it for a schedule and an API key

The schedule form saves a profile or chosen connections, never both, and a profile's repository and workspace fill the form. On Settings → API Keys, each key's row chooses its profile, None first. A key with no profile reaches none of your connections.

Step 9. Choose it from an MCP client

A client sends the profile on every request of its connection, in one header holding the reserved key @profile alone:

x-zaru-contexts: {"@profile":"0000daeb-ae45-4d06-9712-9d498a653b24"}

That id is the docs' sample; use your own profile's id. @profile beside any other key is answered 400.

Step 10. Read a refusal

Each governed call is checked against the profile as it stands at that moment. A tool outside it is refused TOOL_NOT_IN_PROFILE: "This tool is not in the profile chosen for this run." Zaru Web shows a card linking to the profile, so you can add the tool or leave it out. A run started by another run never reaches past the connections that run chose. An "Always allow" choice made on a profile's run applies to that profile only, and deleting the profile revokes it.

What the docs do not say

Related guides

Make one profile per job, and start with the fewest tools.

Get Zaru free