Summary
Today, "Configure Tool Sets..." lets users create a new tool sets file or open an existing user-defined tool set, but it does not help them capture the tools they have already chosen in an active chat session. This creates unnecessary friction when a user has already curated a useful tool selection in agent mode and wants to turn that selection into a reusable tool set.
We should add a "Create from current selection" flow that creates a new tool set definition pre-filled from the currently enabled tools and tool sets in the active chat input.
Problem
The current flow is file-oriented, not selection-oriented:
- "Configure Tool Sets..." only offers:
- create a new tool sets file
- open an existing user tool set file
- The active chat already tracks the current enabled tool/tool set state
- The tools picker already exposes a "Configure Tool Sets..." entry, but that action loses the context of what the user currently has selected
This means users have to manually re-create a tool set after they have already done the work of selecting the right tools in chat.
Proposal
Add a new action inside the "Configure Tool Sets..." flow:
- "Create from current selection..."
This action should:
- Detect the current tool selection from the active chat widget
- Create a new .toolsets.jsonc file, or allow appending to a chosen user tool sets file
- Insert a new tool set object with the ools property pre-filled from the current selection
- Open the file in the editor so the user can finish naming, describing, and optionally changing the icon
Expected UX
Entry point
The feature should be available from the existing "Configure Tool Sets..." command.
When invoked from the tools picker while a chat widget is active, the command should have access to the current tool selection immediately.
If invoked without suitable active chat context, we should either hide "Create from current selection", or show it but fall back gracefully with a clear message.
Suggested flow
Inside "Configure Tool Sets...", offer:
- Create from current selection...
- Create new tool sets file...
- Existing user tool sets...
If the user picks "Create from current selection...":
- Prompt for the target file name, or allow picking an existing user tool sets file
- Prompt for the new tool set name
- Create a tool set stub pre-filled from the current selection
- Open the resulting file
Generated content example
jsonc { "myToolSet": { "tools": [ "read", "search", "github/issues" ], "description": "", "icon": "tools" } }
Implementation notes
Source of truth
The current selection already exists as an enablement map in the active widget:
- src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.ts
- src/vs/workbench/contrib/chat/browser/attachments/chatVariables.ts
We should reuse that state instead of recomputing from the picker UI.
Serialization rules
- If a tool set is enabled, write the tool set reference name, not every child tool
- If an individual tool is enabled outside of an enabled tool set, write the individual tool reference name
- De-duplicate entries
- Use fully qualified reference names where appropriate to match prompt syntax
Initial implementation
For the first version:
- Create a new .toolsets.jsonc file with a single pre-filled tool set object
Acceptance Criteria
Why this helps
This makes tool sets much easier to discover and author from real usage. Users already build useful tool combinations interactively in chat. Turning that state into a reusable tool set should be one step, not a manual transcription exercise.
Summary
Today, "Configure Tool Sets..." lets users create a new tool sets file or open an existing user-defined tool set, but it does not help them capture the tools they have already chosen in an active chat session. This creates unnecessary friction when a user has already curated a useful tool selection in agent mode and wants to turn that selection into a reusable tool set.
We should add a "Create from current selection" flow that creates a new tool set definition pre-filled from the currently enabled tools and tool sets in the active chat input.
Problem
The current flow is file-oriented, not selection-oriented:
This means users have to manually re-create a tool set after they have already done the work of selecting the right tools in chat.
Proposal
Add a new action inside the "Configure Tool Sets..." flow:
This action should:
Expected UX
Entry point
The feature should be available from the existing "Configure Tool Sets..." command.
When invoked from the tools picker while a chat widget is active, the command should have access to the current tool selection immediately.
If invoked without suitable active chat context, we should either hide "Create from current selection", or show it but fall back gracefully with a clear message.
Suggested flow
Inside "Configure Tool Sets...", offer:
If the user picks "Create from current selection...":
Generated content example
jsonc { "myToolSet": { "tools": [ "read", "search", "github/issues" ], "description": "", "icon": "tools" } }Implementation notes
Source of truth
The current selection already exists as an enablement map in the active widget:
We should reuse that state instead of recomputing from the picker UI.
Serialization rules
Initial implementation
For the first version:
Acceptance Criteria
Why this helps
This makes tool sets much easier to discover and author from real usage. Users already build useful tool combinations interactively in chat. Turning that state into a reusable tool set should be one step, not a manual transcription exercise.