github / github/copilot-cli

Feature request: Allow plugins to declare tool requirements for custom agents when spawned as sub-agents

Open
#3,506 0 comments 3 reactions 0 assignees View on GitHub
area:agents area:plugins area:tools
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

## Summary

When custom agents defined in a plugin (via `.github/agents/*.agent.md`) are invoked as **sub-agents** through the `task` tool, the CLI runtime provisions a restricted tool set that ignores the `tools:` frontmatter declared in the agent file.

This means sub-agents that are designed to create files (e.g. writing review reports, creating proposal documents) cannot do their job when running in the CLI — even though they work fine in VS Code where the `tools:` frontmatter is respected.

## Current behaviour

| Agent declaration | Tools in VS Code | Tools in CLI (sub-agent) |
|---|---|---|
| `tools: [read, search, edit, execute/sendToTerminal, agent, web]` | All declared tools | `view`, `task`, `apply_patch` |
| `tools: [read, search, web, edit/editFiles, agent]` | All declared tools | `view` only |
| `tools: [read, search, web, edit/editFiles]` | All declared tools | `view`, `edit` (existing files only) |

The CLI appears to assign tools based on internal logic rather than respecting the plugin agent's declared requirements.

## Proposed solution

Allow plugins to declare tool requirements for their agents that the CLI respects when spawning them as sub-agents. For example, in the agent frontmatter or in `plugin.json`:

```yaml
---
tools: [read, search, edit, execute/sendToTerminal, agent, web]
cli-tools: [view, edit, create, bash, apply_patch, task] # tools required in CLI runtime
---
```

Or in `plugin.json`:

```json
{
"agents": {
"review": {
"path": ".github/agents/review.agent.md",
"tools": ["view", "edit", "create", "bash", "apply_patch", "task"]
}
}
}
```

## Why this matters

Framework authors building multi-agent workflows (e.g. execute → review → architecture-review → security-review) need sub-agents to persist artifacts (review reports, proposal files). Without write tools, sub-agents must return content in their response text and rely on the calling agent to persist it — adding fragility, complexity, and token overhead to the workflow.

## Tested on

- Copilot CLI v1.0.53
- macOS (darwin-arm64)
- Plugin-based custom agents invoked via the `task` tool

## Workaround

Sub-agents detect whether write tools are available. If not, they return file content and intended paths in their response. The nearest parent agent with write capability persists the artifacts on their behalf.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.