Background todo agent experiment silently disables `manage_todo_list`, breaking custom instructions and workflows
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
- Copilot Chat Extension Version: 1.127.0
- VS Code Version: 1.127.0
- OS Version: macOS 15.7.7
- Feature (e.g. agent/edit/ask mode): agent mode
- Selected model (e.g. GPT 4.1, Claude 3.7 Sonnet): Claude Opus 4.6
- Logs:
-
Version: 1.127.0
Commit: 4fe60c8b1cdac1c4c174f2fb180d0d758272d713
Date: 2026-06-30T10:52:33+02:00
Electron: 42.2.0
ElectronBuildId: 14159160
Chromium: 148.0.7778.97
Node.js: 24.15.0
V8: 14.8.178.14-electron.0
OS: Darwin arm64 24.6.0
Steps to Reproduce:
1. Add an instruction to your global `copilot-instructions` that encourages the agent to use `manage_todo_list` for complex tasks
2. Be enrolled in the `chat.agent.backgroundTodoAgent.enabled` experiment (this happens silently, without user consent or notification)
3. Start an agent session with a multi-step task
4. Observe the agent responding with "there is no such tool called manage_todo_list"
## Problem
The `BackgroundTodoAgentEnabled` experiment (`github.copilot.chat.agent.backgroundTodoAgent.enabled` introduced in https://github.com/microsoft/vscode/pull/313911) **silently removes the `manage_todo_list` tool from the main agent's available tools** and replaces it with a background `copilot-utility-small` model that autonomously manages the todo list. This happens with no user notification, no changelog mention, and no graceful degradation.
### Why this is problematic
1. **Breaks custom instructions**: Users who have written `copilot-instructions` files referencing `manage_todo_list` (a tool that has been publicly available and documented) will see the agent claim the tool doesn't exist while the tool UI specifically says it's still there as before.
2. **Silent enrollment**: Because the setting is `ExperimentBased` with the `"onExp"` tag, users are enrolled without any indication. There's no notification, no UI badge, nothing in the release notes to explain why a previously-working tool stopped being available.
3. **Wasted debugging time**: I spent significant time researching why the agent was refusing to use a tool that clearly exists in the documentation and had been working for me previously. There is no error message, log entry, or hint that an experiment disabled it.
4. **Breaks demos and shared workflows**: If you've built workflows or demos around the todo list feature and share them with colleagues, whether the workflow works depends on each person's invisible experiment assignment.
## Expected behavior
- If an experiment disables a user-facing tool, users should be notified (e.g., a notification, a note in the Copilot output channel, or at minimum the agent should acknowledge the tool exists but is currently managed differently)
- Custom instructions referencing `manage_todo_list` should not result in the agent claiming the tool doesn't exist — either the tool should remain available, or the agent should gracefully explain it's being handled in the background
- Experiment-gated features that remove existing functionality should have an explicit opt-in, not a silent opt-in
## Workaround
Explicitly set in `settings.json`:
```json
"github.copilot.chat.agent.backgroundTodoAgent.enabled": false
```
This overrides the experiment assignment and restores the original behavior.
Contributor guide
Assessment
This issue has not been assessed yet.