feat(workflows): grant codebase-memory MCP tools to code-intel stages
Explicit per-stage grants (least-privilege, invariant #5) for the mounted codebase-memory MCP side-car: - role_pipeline: discovery bootstraps the graph (index_repository) + grounds; analyst/architect/decomposer/implementer/reviewer get read-only query tools (search_code/search_graph/get_architecture/trace_path/get_code_snippet) scoped to each role. NOTE: architect flips from pure-reasoning to tool-calling. - review_loop implement+review and task_planning planner get read-only queries. Tools are approval-gated at T2 (server default in config.toml [[mcp]]). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,12 @@ start = "implement"
|
||||
id = "implement"
|
||||
prompt = "prompts/implement.md"
|
||||
produces = [{ name = "patch", kind = "file_written" }]
|
||||
allowed_tools = ["file_write", "task_create", "task_update", "task_context", "task_search"]
|
||||
allowed_tools = [
|
||||
"file_write", "task_create", "task_update", "task_context", "task_search",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__get_code_snippet",
|
||||
"mcp__codebase-memory__trace_path",
|
||||
]
|
||||
token_budget = 8192
|
||||
max_retries = 3
|
||||
|
||||
@@ -31,7 +36,11 @@ id = "review"
|
||||
prompt = "prompts/review.md"
|
||||
needs = ["patch"]
|
||||
produces = [{ name = "review_report", kind = "review_report" }]
|
||||
allowed_tools = ["task_context", "task_update"]
|
||||
allowed_tools = [
|
||||
"task_context", "task_update",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__trace_path",
|
||||
]
|
||||
token_budget = 8192
|
||||
max_retries = 3
|
||||
|
||||
|
||||
@@ -38,7 +38,15 @@ start = "discovery"
|
||||
id = "discovery"
|
||||
prompt = "prompts/discovery.md"
|
||||
produces = [{ name = "discovery", kind = "discovery" }]
|
||||
allowed_tools = ["file_read", "list_dir", "shell"]
|
||||
# Bootstraps the code-intelligence graph (index_repository) so downstream stages can query it,
|
||||
# plus grounds vetting against the real architecture. mcp__codebase-memory__* come from the
|
||||
# [[mcp]] side-car in config.toml.
|
||||
allowed_tools = [
|
||||
"file_read", "list_dir", "shell",
|
||||
"mcp__codebase-memory__index_repository",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__get_architecture",
|
||||
]
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
|
||||
@@ -49,7 +57,14 @@ max_retries = 2
|
||||
id = "analyst"
|
||||
prompt = "prompts/analyst.md"
|
||||
produces = [{ name = "analysis", kind = "analysis" }]
|
||||
allowed_tools = ["file_read", "shell", "task_search", "task_context", "task_create"]
|
||||
allowed_tools = [
|
||||
"file_read", "shell", "task_search", "task_context", "task_create",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__search_graph",
|
||||
"mcp__codebase-memory__get_architecture",
|
||||
"mcp__codebase-memory__trace_path",
|
||||
"mcp__codebase-memory__get_code_snippet",
|
||||
]
|
||||
ground_references = true
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
@@ -60,6 +75,13 @@ id = "architect"
|
||||
prompt = "prompts/architect.md"
|
||||
needs = ["analysis"]
|
||||
produces = [{ name = "design", kind = "design" }]
|
||||
# Read-only code intelligence to decide component boundaries against the real call graph.
|
||||
# NOTE: this flips the architect from a pure-reasoning stage into a tool-calling one.
|
||||
allowed_tools = [
|
||||
"mcp__codebase-memory__get_architecture",
|
||||
"mcp__codebase-memory__search_graph",
|
||||
"mcp__codebase-memory__trace_path",
|
||||
]
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
|
||||
@@ -71,7 +93,11 @@ max_retries = 2
|
||||
id = "decomposer"
|
||||
prompt = "prompts/task_planner.md"
|
||||
needs = ["design"]
|
||||
allowed_tools = ["file_read", "shell", "task_search", "task_context", "task_decompose", "task_create"]
|
||||
allowed_tools = [
|
||||
"file_read", "shell", "task_search", "task_context", "task_decompose", "task_create",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__search_graph",
|
||||
]
|
||||
require_task_decompose = true
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
@@ -88,6 +114,9 @@ claim_task = true
|
||||
allowed_tools = [
|
||||
"file_read", "file_write", "file_edit", "shell", "propose_scope",
|
||||
"task_create", "task_update", "task_context", "task_search",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__get_code_snippet",
|
||||
"mcp__codebase-memory__trace_path",
|
||||
]
|
||||
token_budget = 32768
|
||||
max_retries = 3
|
||||
@@ -100,7 +129,12 @@ id = "reviewer"
|
||||
prompt = "prompts/reviewer.md"
|
||||
needs = ["patch", "analysis"]
|
||||
produces = [{ name = "review_report", kind = "review_report" }]
|
||||
allowed_tools = ["task_context", "task_update"]
|
||||
allowed_tools = [
|
||||
"task_context", "task_update",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__trace_path",
|
||||
"mcp__codebase-memory__get_code_snippet",
|
||||
]
|
||||
token_budget = 32768
|
||||
max_retries = 2
|
||||
|
||||
|
||||
@@ -9,7 +9,11 @@ start = "planner"
|
||||
[[stages]]
|
||||
id = "planner"
|
||||
prompt = "prompts/task_planner.md"
|
||||
allowed_tools = ["file_read", "shell", "task_search", "task_context", "task_decompose", "task_create"]
|
||||
allowed_tools = [
|
||||
"file_read", "shell", "task_search", "task_context", "task_decompose", "task_create",
|
||||
"mcp__codebase-memory__search_code",
|
||||
"mcp__codebase-memory__search_graph",
|
||||
]
|
||||
require_task_decompose = true
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
|
||||
Reference in New Issue
Block a user