Pull Request Overview
- Opened on October 21, 2026
- Status Merged
- Commit count 2 with first commit October 21, 2026
Total Delta
Open Days
Test Delta
How long has this pull request spent in each phase of its lifecycle?
| Fraction of total time | Business days | Phase |
|---|---|---|
|
|
0.0 days | Authoring 1 commit before pull request opened for review |
|
|
0.0 days | Awaiting first review |
|
|
0.4 days | Revising work with 1 commit in response to 5 reviews that left 19 comments |
|
|
9.0 days | Merge to deploy (still awaiting deployment) |
Total time for pull request
0.4 business days
from first commit authored to merge
Still awaiting deployment
chat: Explain disabled permission modes instead of hiding them
Users see Assisted and Allow All promoted in documentation, but enterprise restrictions currently make these options disappear. That makes an intentional restriction look like a missing feature.
Keep supported, restricted modes visible but disabled, with a clear reason and a briefcase when policy is known. Hide Assisted's "New" badge while disabled. Permission enforcement and the Harness picker are unchanged.
Test: Apply managed permissions.disableAssistedPermissionsMode: true and permissions.disableBypassPermissionsMode: "disable", then restart. Confirm both modes remain visible but cannot be selected, and Assisted has no "New" badge. Remove the restrictions and restart to confirm selection and the badge return.
🤖 Authored with GitHub Copilot on behalf of @rwoll.
> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.
## Copilot review overview
4 open issues
-
[Hard-coding `PERMISSION_LEVEL_ORDER` risks silently hiding any future `ChatPermissionLevel`…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341516956) · New
[The policy-disabled description is built by concatenating a non-localized `'$(briefcase) '` prefix…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341517035) · New
[Setting `tooltip: ''` unconditionally can lead to confusing empty tooltips / unintended suppression…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341517096) · New
[The `level` parameter is typed as `string`, but this helper only meaningfully supports…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341517177) · New
-
-
-
4 resolved since last review
-
[`isApprovalLevelDisabledByKnownPolicy` doesn’t handle `ChatPermissionLevel.Autopilot`, even though…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700953)
-
> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.
## Copilot review overview
4 open issues
-
[`getOfferedPermissionLevels` filters strictly to `PERMISSION_LEVEL_ORDER`. If a new permission…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700685) · New
[`equalsUnavailablePermissionLevels` is order-sensitive. If the host/report produces the same…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700788) · New
[`getOfferedPermissionLevels` filters strictly to `PERMISSION_LEVEL_ORDER`. If a new permission…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700860) · New
[`isApprovalLevelDisabledByKnownPolicy` doesn’t handle `ChatPermissionLevel.Autopilot`, even though…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700953) · New
-
-
-
What changed in this PR
This PR updates the chat permissions picker UX so that supported-but-restricted permission modes remain visible as disabled rows with clear explanations (including managed-policy attribution when known), instead of disappearing and looking like missing features.
**Changes:**
- Introduces a shared “unavailable permission level” presentation (description + hover + aria text) and uses it across pickers.
- Updates permission/mode pickers to keep withheld levels visible-but-disabled, suppressing “New” while disabled and preventing stale activation.
- Adds/updates tests and docs to validate policy attribution, stale menus, refresh behavior, and accessibility help text.
| File | Description |
| ---- | ----------- |
| src/vs/workbench/contrib/chat/test/browser/widget/input/permissionPickerActionItem.test.ts | Adds coverage for disabled-but-visible permission row...
Resolved Comment Threads
> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.
## Copilot review overview
4 open issues
-
[Hard-coding `PERMISSION_LEVEL_ORDER` risks silently hiding any future `ChatPermissionLevel`…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341516956) · New
[The policy-disabled description is built by concatenating a non-localized `'$(briefcase) '` prefix…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341517035) · New
[Setting `tooltip: ''` unconditionally can lead to confusing empty tooltips / unintended suppression…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341517096) · New
[The `level` parameter is typed as `string`, but this helper only meaningfully supports…](https://github.com/microsoft/vscode/pull/343302#discussion_r4341517177) · New
-
-
-
4 resolved since last review
-
[`isApprovalLevelDisabledByKnownPolicy` doesn’t handle `ChatPermissionLevel.Autopilot`, even though…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700953)
-
> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.
## Copilot review overview
4 open issues
-
[`getOfferedPermissionLevels` filters strictly to `PERMISSION_LEVEL_ORDER`. If a new permission…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700685) · New
[`equalsUnavailablePermissionLevels` is order-sensitive. If the host/report produces the same…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700788) · New
[`getOfferedPermissionLevels` filters strictly to `PERMISSION_LEVEL_ORDER`. If a new permission…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700860) · New
[`isApprovalLevelDisabledByKnownPolicy` doesn’t handle `ChatPermissionLevel.Autopilot`, even though…](https://github.com/microsoft/vscode/pull/343302#discussion_r4340700953) · New
-
-
-
What changed in this PR
This PR updates the chat permissions picker UX so that supported-but-restricted permission modes remain visible as disabled rows with clear explanations (including managed-policy attribution when known), instead of disappearing and looking like missing features.
**Changes:**
- Introduces a shared “unavailable permission level” presentation (description + hover + aria text) and uses it across pickers.
- Updates permission/mode pickers to keep withheld levels visible-but-disabled, suppressing “New” while disabled and preventing stale activation.
- Adds/updates tests and docs to validate policy attribution, stale menus, refresh behavior, and accessibility help text.
| File | Description |
| ---- | ----------- |
| src/vs/workbench/contrib/chat/test/browser/widget/input/permissionPickerActionItem.test.ts | Adds coverage for disabled-but-visible permission row...