The whole hunk
from line 1049, old and new numbered
/
lines
from line 1049
10491049 permissionMode: PermissionMode | None = None
10501050```
10511051
1052| Field | Required | Description |
1053| :---------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1054| `description` | Yes | Natural language description of when to use this agent |
1055| `prompt` | Yes | The agent's system prompt |
1056| `tools` | No | Array of allowed tool names. If omitted, inherits every [tool available to subagents](/docs/en/sub-agents#available-tools) |
1057| `disallowedTools` | No | Array of tool names to remove from the agent's tool set. MCP server-level patterns are also accepted: `mcp__server` or `mcp__server__*` removes every tool from that server, and `mcp__*` removes every MCP tool from any server |
1058| `model` | No | Model override for this agent. Accepts an alias such as `"sonnet"`, `"opus"`, `"haiku"`, or `"inherit"`, or a full model ID. If omitted, uses the main model |
1059| `skills` | No | List of skill names to preload into the agent's context at startup. Unlisted skills remain invocable through the Skill tool |
1060| `memory` | No | Memory source for this agent: `"user"`, `"project"`, or `"local"` |
1061| `mcpServers` | No | MCP servers available to this agent. Each entry is a server name or an inline `{name: config}` dict |
1062| `initialPrompt` | No | Auto-submitted as the first user turn when this agent runs as the main thread agent |
1063| `maxTurns` | No | Maximum number of agentic turns before the agent stops |
1064| `background` | No | Run this agent as a non-blocking background task when invoked |
1065| `effort` | No | Reasoning effort level for this agent. Accepts a named level or an integer. See [`EffortLevel`](#effortlevel) |
1066| `permissionMode` | No | Permission mode for tool execution within this agent. See [`PermissionMode`](#permissionmode) |
1052| Field | Required | Description |
1053| :---------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1054| `description` | Yes | Natural language description of when to use this agent |
1055| `prompt` | Yes | The agent's system prompt |
1056| `tools` | No | Array of allowed tool names. If omitted, inherits every [tool available to subagents](/docs/en/sub-agents#available-tools) |
1057| `disallowedTools` | No | Array of tool names to remove from the agent's tool set. MCP server-level patterns are also accepted: `mcp__server` or `mcp__server__*` removes every tool from that server, and `mcp__*` removes every MCP tool from any server |
1058| `model` | No | Model override for this agent. Accepts an alias such as `"sonnet"`, `"opus"`, `"haiku"`, or `"inherit"`, or a full model ID. When you omit it, Claude Code picks the model in the [subagent model order](/docs/en/sub-agents#choose-a-model) |
1059| `skills` | No | List of skill names to preload into the agent's context at startup. Unlisted skills remain invocable through the Skill tool |
1060| `memory` | No | Memory source for this agent: `"user"`, `"project"`, or `"local"` |
1061| `mcpServers` | No | MCP servers available to this agent. Each entry is a server name or an inline `{name: config}` dict |
1062| `initialPrompt` | No | Auto-submitted as the first user turn when this agent runs as the main thread agent |
1063| `maxTurns` | No | Maximum number of agentic turns before the agent stops |
1064| `background` | No | Run this agent as a non-blocking background task when invoked |
1065| `effort` | No | Reasoning effort level for this agent. Accepts a named level or an integer. See [`EffortLevel`](#effortlevel) |
1066| `permissionMode` | No | Permission mode for tool execution within this agent. See [`PermissionMode`](#permissionmode) |
10671067
10681068<Note>
10691069 `AgentDefinition` field names use camelCase, such as `disallowedTools`, `permissionMode`, and `maxTurns`. These names map directly to the wire format shared with the TypeScript SDK. This differs from `ClaudeAgentOptions`, which uses Python snake\_case for the equivalent top-level fields such as `disallowed_tools` and `permission_mode`. Because `AgentDefinition` is a dataclass, passing a snake\_case keyword raises a `TypeError` at construction time.