#21727: skills: treat allowBundled [] as denylist for bundled skills
agents
size: XS
Cluster:
Bundled Skills Management
## Summary
- Fixes an issue where `skills.allowBundled: []` was being normalized to `undefined` and interpreted as an allow-all state.
- Normalizes allowlist values to preserve empty arrays so empty config is now treated as an explicit denylist.
- Updates bundled-skill eligibility logic so:
- `allowBundled: undefined` keeps current behavior (bundled skills allowed by default).
- `allowBundled: []` blocks all bundled skills.
- Adds e2e regression coverage in `src/agents/skills.buildworkspaceskillstatus.e2e.test.ts`.
## Testing
- `pnpm vitest run --config vitest.e2e.config.ts src/agents/skills.buildworkspaceskillstatus.e2e.test.ts`
- `pnpm test:fast`
Closes #21709.
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
Fixes a normalization bug where `allowBundled: []` was incorrectly treated as allow-all instead of deny-all. The change preserves empty arrays through normalization and adds explicit logic to distinguish between undefined (default allow-all) and empty array (explicit deny-all). E2e test coverage added for the empty array case.
<h3>Confidence Score: 5/5</h3>
- Safe to merge - clean bug fix with targeted changes and test coverage
- The fix is minimal and focused, changing only the normalization logic to preserve empty arrays. The distinction between `undefined` (allow-all) and `[]` (deny-all) is now explicit and well-tested. No breaking changes to existing functionality.
- No files require special attention
<sub>Last reviewed commit: 344cda1</sub>
<!-- greptile_other_comments_section -->
<sub>(4/5) You can add custom instructions or style guidelines for the agent [here](https://app.greptile.com/review/github)!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#21839: fix(skills): allowBundled: [] now blocks all bundled skills
by hydro13 · 2026-02-20
91.9%
#22198: fix(skills): treat empty allowBundled array as block-all
by haitao-sjsu · 2026-02-20
87.3%
#21745: tools: fix image inbound resolution and empty allowBundled
by AIflow-Labs · 2026-02-20
78.8%
#19707: fix(agents): apply per-agent skills filter to all run paths
by mcaxtr · 2026-02-18
77.7%
#10016: fix: prevent FD exhaustion from skill watcher scanning artifact trees
by oldeucryptoboi · 2026-02-06
77.0%
#22306: Warn on malformed skill parsing failures in load path
by AIflow-Labs · 2026-02-21
76.9%
#8075: fix(skills): add --ignore-scripts to all package managers
by yubrew · 2026-02-03
76.8%
#8150: fix(skills): block dangerous environment variables from skill config
by yubrew · 2026-02-03
76.2%
#12076: fix(skills): recursive directory filtering to actually exclude venv...
by xiaoyaner0201 · 2026-02-08
76.2%
#23749: fix some issues
by tronpis · 2026-02-22
75.5%