github / github/copilot-cli

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

オープン
#3,506 コメント 0 件 リアクション 3 件 担当者 0 名 GitHub で見る
area:agents area:plugins area:tools
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

## 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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start by tracing how `.github/agents/*.agent.md` and `plugin.json` agent declarations are loaded, then follow the `task` tool path that provisions sub-agent tools. Compare the declared requirements with the CLI's restricted set; done means a documented, tested mechanism lets plugin agents receive the tools they require when spawned as sub-agents.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
json, shell, yaml
領域
cli, devtools
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。