Tool descriptions are public
Anything you write in a tool description goes to Anthropic on every call that mentions the tool. That includes hostnames, internal paths, table names, secret hints. Strip secrets before deploying — descriptions are not a private notes field.
Side effects need explicit permission
Read tools (search, lookup, get) can usually run unattended. Write tools (create, modify, delete) deserve a human-in-the-loop check. The Agent SDK supports this natively via permission prompts; on the Client SDK you build it yourself. Either way, never let a model trigger destructive side effects without acknowledgment.
Sandbox the dangerous
If a tool runs shell commands, executes code, or hits the filesystem, it lives in a sandbox: restricted environment variables, path arguments checked against one root and flags limited to a known list (a working directory alone stops neither absolute paths nor .., and flags such as grep -R or -f<file> reach around a path check), a time budget, an output size cap. A command-name allowlist is a guard, not a sandbox; untrusted input also needs the OS to confine the process. Anthropic's code_execution tool runs in a sandbox; your custom tools must match.