Description
Found by impl-critic (M4) during review of PR #6712 (#6707/#6706 fix). zeph_subagent::filter_skills (crates/zeph-subagent/src/filter.rs:503) builds a subagent's visible skill list with no trust-level filtering whatsoever — Blocked and Quarantined skills alike are passed through unfiltered. This is unrelated to the #6710/#6701 fix (which addressed active_skill_names/matching in zeph-core's assembly.rs) and unrelated to #6712's mention-picker fix (skill_catalog_items, also zeph-core) — this is a separate code path in zeph-subagent.
#6706's original complaint ("an AutoSkill draft... will still surface in matching and be reported to the user/subagent as an available skill by name") explicitly named the subagent listing surface, but neither #6710 nor #6712 touched zeph-subagent.
Reproduction Steps
- Have a skill with
Blocked or Quarantined trust in the registry.
- Spawn a subagent whose skill visibility is built via
zeph_subagent::filter_skills.
- Inspect the skill list the subagent receives.
Expected Behavior
filter_skills should apply the same trust-aware filtering as the parent-agent surfaces it: at minimum, exclude Blocked (and, per the resolution converged on in #6710/#6712, either exclude or annotate Quarantined consistent with whatever listing surface filter_skills feeds).
Actual Behavior
No trust filter is applied — Blocked and Quarantined skills appear identically to Trusted ones in the subagent's skill list.
Environment
Related
Description
Found by impl-critic (M4) during review of PR #6712 (#6707/#6706 fix).
zeph_subagent::filter_skills(crates/zeph-subagent/src/filter.rs:503) builds a subagent's visible skill list with no trust-level filtering whatsoever —BlockedandQuarantinedskills alike are passed through unfiltered. This is unrelated to the #6710/#6701 fix (which addressedactive_skill_names/matching inzeph-core'sassembly.rs) and unrelated to #6712's mention-picker fix (skill_catalog_items, alsozeph-core) — this is a separate code path inzeph-subagent.#6706's original complaint ("an AutoSkill draft... will still surface in matching and be reported to the user/subagent as an available skill by name") explicitly named the subagent listing surface, but neither #6710 nor #6712 touched
zeph-subagent.Reproduction Steps
BlockedorQuarantinedtrust in the registry.zeph_subagent::filter_skills.Expected Behavior
filter_skillsshould apply the same trust-aware filtering as the parent-agent surfaces it: at minimum, excludeBlocked(and, per the resolution converged on in #6710/#6712, either exclude or annotateQuarantinedconsistent with whatever listing surfacefilter_skillsfeeds).Actual Behavior
No trust filter is applied —
BlockedandQuarantinedskills appear identically toTrustedones in the subagent's skill list.Environment
Related