---
title: Agents
description: What a coding agent may run on its own, what waits for you, and the hooks dot installs for Claude Code.
---

dot is built to be used by coding agents as well as people. The repo's
`AGENTS.md` tells an agent the rules; these are the ones that matter to you.

## What an agent may do on its own

- **`dot check`**, **`dot explain`**, **`dot doctor`** and every `--help`:
  they never change anything, and never need a password or Touch ID.
- **Read the repo and these docs.** The site publishes `llms.txt`, the whole
  docs as one file (`llms-full.txt`), and every page as raw Markdown.

## What waits for you

- **`dot apply`**, and anything else that changes the Mac, including
  `dot clone` and `dot fork`.
- **Anything with `sudo`.**
- **`git push`**, since your fork is public.
- **Creating or changing a secret's value.** An agent never reads or prints a
  private key, token or secret value; a project secret only travels through
  pipes (`dot secret`).

On a clean Mac, an agent runs the installer with `--yes --no-apply`: it
installs, stops after `dot check`, and shows you what `apply` would change.

## Claude Code

Claude Code (the CLI and the desktop app's Code tab) reads
`~/.claude/settings.json`. Claude Code writes its own settings there, so dot
only adds its hooks to that file and never touches the rest.
`config/claude.conf` declares them; the scripts live in
`config/home/.claude/hooks/` and are linked into `~/.claude/hooks/`.

```sh
dot check claude     # which hooks are missing
dot apply claude     # add them
```

A new or changed hook takes effect in the next Claude Code session.

| Hook | Runs | Why |
|------|------|-----|
| `no-links-in-email.sh` | before the Gmail connector's `send_message`, `create_draft` and `update_draft` | blocks an email whose subject or body holds a URL or a domain name |

**`no-links-in-email.sh`.** The claude.ai Gmail connector rewrites every URL
and bare domain it writes into a `google.com/url?q=…` redirect, and that is
what the recipient gets. Email addresses aren't affected. With the hook, the
agent is told to rewrite the text without links, or to hand you the text to
send from Gmail on the web.

## Known issues the hooks work around

Check these before changing a hook; once one is fixed, remove the hook that
works around it (its line in `config/claude.conf`, its script, and its entry
in `~/.claude/settings.json`).

| Issue | Hook | Checked |
|-------|------|---------|
| [anthropics/claude-code#66010](https://github.com/anthropics/claude-code/issues/66010): Gmail connector rewrites URLs into Google redirects (main report) | `no-links-in-email.sh` | 2026-09-25, open |
| [anthropics/claude-code#94247](https://github.com/anthropics/claude-code/issues/94247): the same for bare domains and `htmlBody` | `no-links-in-email.sh` | 2026-09-25, open |
| [anthropics/claude-code#66847](https://github.com/anthropics/claude-code/issues/66847): the same in `create_draft` | `no-links-in-email.sh` | closed as a duplicate of #66010 |
