microsoft / microsoft/vscode

Background todo agent experiment silently disables `manage_todo_list`, breaking custom instructions and workflows

Open
#324,509 1 comment 5 reactions 1 assignee Claimed by @vritant24 View on GitHub
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

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.