docs(coding-agent/prompts): improved Task tool docs to clarify subagent context isolation and tool access

- Updated Task tool documentation to emphasize that subagents have no access to conversation history and require all relevant context to be explicitly passed.
- Revised task agent prompt to clarify that subagents have full tool access and can make file edits, run commands, and create files.
- Replaced example in Task tool docs with a more realistic refactoring scenario demonstrating context passing.
This commit is contained in:
can1357
2026-01-11 02:28:29 +01:00
parent 50119740c0
commit ef97ffc322
3 changed files with 31 additions and 24 deletions
+2 -1
View File
@@ -1,13 +1,14 @@
# Changelog
## [Unreleased]
### Added
- Added `planner` built-in agent for comprehensive implementation planning with slow model
### Changed
- Updated Task tool documentation to emphasize that subagents have no access to conversation history and require all relevant context to be explicitly passed
- Revised task agent prompt to clarify that subagents have full tool access and can make file edits, run commands, and create files
- OpenAI Codex: updated to use bundled system prompt from upstream
- Changed `complete` tool to make `data` parameter optional when aborting, while still requiring it for successful completions
@@ -1,14 +1,15 @@
You are a worker agent for delegated tasks in an isolated context. Finish only the assigned work and return the minimum useful result.
You are a worker agent for delegated tasks. You have FULL access to all tools (edit, write, bash, grep, read, etc.) - use them as needed to complete your task.
Finish only the assigned work and return the minimum useful result.
Principles:
- You CAN and SHOULD make file edits, run commands, and create files when your task requires it.
- Be concise. No filler, repetition, or tool transcripts.
- If blocked, ask a single focused question; otherwise proceed autonomously.
- Prefer narrow search (grep/find) then read only needed ranges.
- Avoid full-file reads unless necessary.
- NEVER create files unless absolutely required. Prefer edits to existing files.
- Prefer edits to existing files over creating new ones.
- NEVER create documentation files (\*.md) unless explicitly requested.
- Any file paths in your response MUST be absolute.
- When spawning subagents with the Task tool, include a 5-8 word user-facing description.
- Include the smallest relevant code snippet when discussing code or config.
- Follow the main agent's instructions.
+24 -19
View File
@@ -2,6 +2,13 @@ Launch a new agent to handle complex, multi-step tasks autonomously.
The Task tool launches specialized agents (workers) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.
**CRITICAL: Subagents have NO access to conversation history.** They only see:
1. Their agent-specific system prompt
2. The `context` string you provide
3. The `task` string you provide
If you discussed requirements, plans, schemas, or decisions with the user, you MUST include that information in `context`. Subagents cannot see prior messages - they start fresh with only what you explicitly pass them.
## Available Agents
{{#list agents prefix="- " join="\n"}}
@@ -27,7 +34,7 @@ The Task tool launches specialized agents (workers) that autonomously handle com
- **Structured completion**: If `output` is provided, subagents must call `complete` to finish
- **Parallelize**: Launch multiple agents concurrently whenever possible
- **Results are intermediate data**: Agent findings provide context for YOU to perform actual work. Do not treat agent reports as "task complete" signals.
- **Stateless invocations**: Each agent runs autonomously and returns a single final message. Include all necessary context and specify exactly what information to return.
- **Stateless invocations**: Subagents have zero memory of your conversation. Pass ALL relevant context: requirements discussed, decisions made, schemas agreed upon, file paths mentioned. If you reference something from earlier discussion without including it, the subagent will fail.
- **Trust outputs**: Agent results should generally be trusted
- **Clarify intent**: Tell the agent whether you expect code changes or just research (search, file reads, web fetches)
- **Proactive use**: If an agent description says to use it proactively, do so without waiting for explicit user request
@@ -35,7 +42,7 @@ The Task tool launches specialized agents (workers) that autonomously handle com
## Parameters
- `agent`: Agent type to use for all tasks
- `context`: Shared context string prepended to all task prompts
- `context`: **Required context from conversation** - include ALL relevant info: requirements, schemas, decisions, constraints. Subagents cannot see chat history.
- `model`: (optional) Model override (fuzzy matching, e.g., "sonnet", "opus")
- `tasks`: Array of `{id, task, description}` - tasks to run in parallel (max {{MAX_PARALLEL_TASKS}}, {{MAX_CONCURRENCY}} concurrent)
- `id`: Short CamelCase identifier for display (max 20 chars, e.g., "SessionStore", "LspRefactor")
@@ -46,30 +53,28 @@ The Task tool launches specialized agents (workers) that autonomously handle com
## Example
<example>
user: "Extract all hardcoded strings for i18n"
assistant: I'll scan UI components and return structured string locations for internationalization.
user: "Looks good, execute the plan"
assistant: I'll execute the refactoring plan.
assistant: Uses the Task tool:
{
"agent": "explore",
"context": "Find hardcoded user-facing strings (labels, messages, errors). Ignore logs, comments, and internal identifiers.",
"agent": "task",
"context": "Refactoring the auth module into separate concerns.\n\nPlan:\n1. AuthProvider - Extract React context and provider from src/auth/index.tsx\n2. AuthApi - Extract API calls to src/auth/api.ts, use existing fetchJson helper\n3. AuthTypes - Move types to src/auth/types.ts, re-export from index\n\nConstraints:\n- Preserve all existing exports from src/auth/index.tsx\n- Use project's fetchJson (src/utils/http.ts), don't use raw fetch\n- No new dependencies",
"output": {
"properties": {
"strings": {
"elements": {
"properties": {
"file": { "type": "string" },
"line": { "type": "uint32" },
"text": { "type": "string" },
"suggestedKey": { "type": "string" }
}
}
}
"summary": { "type": "string" },
"decisions": { "elements": { "type": "string" } },
"concerns": { "elements": { "type": "string" } }
}
},
"tasks": [
{ "id": "Forms", "task": "Scan src/components/forms/", "description": "Extract form strings" },
{ "id": "Modals", "task": "Scan src/components/modals/", "description": "Extract modal strings" },
{ "id": "Pages", "task": "Scan src/pages/", "description": "Extract page strings" }
{ "id": "AuthProvider", "task": "Execute step 1: Extract AuthProvider and AuthContext", "description": "Extract React context" },
{ "id": "AuthApi", "task": "Execute step 2: Extract API calls to api.ts", "description": "Extract API layer" },
{ "id": "AuthTypes", "task": "Execute step 3: Move types to types.ts", "description": "Extract types" }
]
}
</example>
Key points:
- **Plan in context**: The full plan is written once; each task references its step without repeating shared constraints
- **Parallel execution**: 3 agents run concurrently, each owning one step - no duplicated work
- **Structured output**: JTD schema ensures consistent reporting across all agents