You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add governance policy block lists so admins can explicitly deny users or groups from governed features and delegated resources, even when allow-all or an allow list would otherwise grant access.
User Value
Customers with APIM-backed endpoint quota tiers need an administrator-friendly way to keep high-threshold users away from low-threshold endpoints, and vice versa, without maintaining large allow lists as ordinary users are onboarded.
Proposed Behavior
Add denied_users and denied_groups to feature and delegated item governance policies.
Evaluate block lists before allow-all, allowed_users, and allowed_groups.
Preserve existing feature-gate behavior: item policies cannot grant access to a feature the user is blocked from using.
Expose block-list management in Admin Settings alongside existing allow-list controls.
Keep duplicated governance paths, including MCP source/destination policy handling, aligned with deny-overrides-allow semantics.
Acceptance Criteria
Admins can configure blocked users and groups for feature policies.
Admins can configure blocked users and groups for delegated item policies.
A matching block-list entry denies access even when allow-all or an allow-list entry would grant it.
Endpoint quota-class separation can be modeled with one high endpoint allow list and one low endpoint block list.
python -m pytest ui_tests\test_admin_governance_tab.py -q (skipped locally because the UI test environment is not configured)
XSS changed-line guardrail
Broken Access Control changed-line guardrail
git diff --check
Follow-up note: any duplicate policy already created in a deployed environment still needs to be removed manually through the admin UI or with an explicitly approved data cleanup.
Follow-up implemented for intentional delegated item policy retargeting.
What changed after the initial duplicate-prevention fix:
Existing delegated item policy edits can now intentionally change the entity/item target while keeping the same policy ID.
The admin UI warns that changing the target will move the policy, keeps the policy ID stable, and sends original target metadata with the save request.
The backend treats that original target metadata as an explicit move: it upserts the new target policy and deletes the old source policy document.
Ambiguous policy-ID reuse without matching original target metadata is still rejected to prevent accidental duplicates.
Feature-policy saves and item-policy deletes were kept out of the retarget conflict path.
Source lookup now requires the exact named policy ID so retarget/delete operations do not fall back to a default policy by mistake.
Implemented the delegated governance policy action follow-up for v0.250.208.
Summary:
Added row-level Show Users, Duplicate, and Inverse actions for delegated item policies.
Duplicate opens the existing item policy editor in create mode with the same target/access lists, (duplicate) appended to the name, and a blank policy ID so save creates a new policy.
Inverse opens create mode with (inverse) appended, preserves Allow All, and swaps allowed users/groups with blocked users/groups.
Moved allowed/blocked user/group details out of the main delegated policy table into a read-only Show Users modal.
python -m pytest ui_tests\test_admin_governance_tab.py -q (skipped locally because UI env vars/storage state were not configured)
Broken Access Control guardrail passed for changed Python files
XSS guardrail passed for changed governance JS
git diff --check
Note: Running the XSS guardrail against all of admin_settings.html still reports unrelated legacy markdown preview sinks outside this governance table header change.
Closing as completed. This issue stayed open after the fix merged because pull requests target Development while the repository default branch is main, so GitHub never applied the Fixes # keyword automatically.
Activity
Bionic711 commentedon Aug 15, 2026
Implementation completed locally on
feature/governance-options-planfor app version0.250.204.Summary:
denied_usersanddenied_groupsto feature and delegated item governance policies.Validation completed:
python -m py_compilefor changed Python filesnode --check application\single_app\static\js\admin\admin_governance.jspython functional_tests\test_governance_enforcement_logic.pypython functional_tests\test_governance_activity_logging.pypython functional_tests\test_governance_route_and_wiring_coverage.pypython functional_tests\test_inbound_mcp_governance_and_tools.pypython functional_tests\test_mcp_destination_governance_and_preconfigurations.pypython -m pytest ui_tests\test_admin_governance_tab.py -q(skipped in this local environment)git diff --checkBionic711 commentedon Aug 15, 2026
Follow-up completed for the delegated item block-list modal behavior.
Summary:
0.250.205and added a v0.250.205 release note entry.Validation completed:
python -m py_compile application\single_app\config.py functional_tests\test_governance_route_and_wiring_coverage.py ui_tests\test_admin_governance_tab.pynode --check application\single_app\static\js\admin\admin_governance.jspython functional_tests\test_governance_route_and_wiring_coverage.pypython -m pytest ui_tests\test_admin_governance_tab.py -q(skipped in this local environment)git diff --checkBionic711 commentedon Aug 15, 2026
Implemented the delegated item policy retargeting fix for the governance block-list work.
What changed:
Validation:
node --check application\single_app\static\js\admin\admin_governance.jspython -m py_compilefor the changed Python and test filespython functional_tests\test_governance_enforcement_logic.pypython functional_tests\test_governance_route_and_wiring_coverage.pypython -m pytest ui_tests\test_admin_governance_tab.py -q(skipped locally because the UI test environment is not configured)git diff --checkFollow-up note: any duplicate policy already created in a deployed environment still needs to be removed manually through the admin UI or with an explicitly approved data cleanup.
Bionic711 commentedon Aug 15, 2026
Follow-up implemented for intentional delegated item policy retargeting.
What changed after the initial duplicate-prevention fix:
Validation:
node --check application\single_app\static\js\admin\admin_governance.jspython -m py_compilefor the changed Python and test filespython functional_tests\test_governance_enforcement_logic.pypython functional_tests\test_governance_route_and_wiring_coverage.pypython -m pytest ui_tests\test_admin_governance_tab.py -q(skipped locally because the UI test environment is not configured)git diff --checkNo production data was changed.
Bionic711 commentedon Aug 15, 2026
Implemented the delegated governance policy action follow-up for v0.250.208.
Summary:
(duplicate)appended to the name, and a blank policy ID so save creates a new policy.(inverse)appended, preserves Allow All, and swaps allowed users/groups with blocked users/groups.Validation:
node --check application\single_app\static\js\admin\admin_governance.jspython -m py_compile application\single_app\config.py functional_tests\test_governance_route_and_wiring_coverage.py ui_tests\test_admin_governance_tab.pypython functional_tests\test_governance_route_and_wiring_coverage.pypython -m pytest ui_tests\test_admin_governance_tab.py -q(skipped locally because UI env vars/storage state were not configured)git diff --checkNote: Running the XSS guardrail against all of
admin_settings.htmlstill reports unrelated legacy markdown preview sinks outside this governance table header change.paullizer commentedon Aug 19, 2026
Shipped in v0.250.208 via #1253.
Release note entries:
Full notes: https://microsoft.github.io/simplechat/explanation/release_notes/
Closing as completed. This issue stayed open after the fix merged because pull requests target
Developmentwhile the repository default branch ismain, so GitHub never applied theFixes #keyword automatically.