Skip to content

fix(skills): enforce fail-closed semantic scan provider validation#4721

Merged
bug-ops merged 1 commit into
mainfrom
4709-semantic-scan-fail-closed
May 30, 2026
Merged

fix(skills): enforce fail-closed semantic scan provider validation#4721
bug-ops merged 1 commit into
mainfrom
4709-semantic-scan-fail-closed

Conversation

@bug-ops
Copy link
Copy Markdown
Owner

@bug-ops bug-ops commented May 30, 2026

Summary

Changes

  • crates/zeph-core/src/agent/agent_access_impl.rs — fail-closed guard in handle_plugins: .trim().is_empty() check + registry presence check before scanner construction; 4 regression tests added
  • crates/zeph-core/src/agent/builder.rswith_semantic_scan(enabled, provider_name) test builder method

Test plan

  • semantic_scan=true, provider="" → CommandError (new regression test)
  • semantic_scan=true, provider=" " → CommandError (trim guard)
  • semantic_scan=true, provider="nonexistent" → CommandError (registry check)
  • semantic_scan=false → install proceeds normally (existing behavior preserved)
  • cargo +nightly fmt --check — clean
  • cargo clippy --workspace -- -D warnings — clean
  • cargo nextest run --workspace --lib --bins — 10414 passed

Closes #4709
Closes #4706

@github-actions github-actions Bot added rust Rust code changes core zeph-core crate bug Something isn't working size/M Medium PR (51-200 lines) labels May 30, 2026
@bug-ops bug-ops force-pushed the 4709-semantic-scan-fail-closed branch from d8720e5 to 6f0bb0e Compare May 30, 2026 01:36
@bug-ops bug-ops enabled auto-merge (squash) May 30, 2026 01:36
…4706, #4709)

When semantic_scan is enabled but semantic_scan_provider is empty or
refers to an unknown provider, plugin add now returns an explicit
CommandError instead of silently proceeding with the primary provider.

- Trim provider name before empty check to prevent whitespace bypass
- Add registry lookup before resolve_background_provider; unknown
  provider names are rejected rather than silently falling back
- resolve_background_provider itself is unchanged — other callers
  retain their intentional fallback semantics

Closes #4709
Closes #4706
@bug-ops bug-ops force-pushed the 4709-semantic-scan-fail-closed branch from 6f0bb0e to 1b0f1b7 Compare May 30, 2026 01:45
@bug-ops bug-ops merged commit 2709db3 into main May 30, 2026
32 checks passed
@bug-ops bug-ops deleted the 4709-semantic-scan-fail-closed branch May 30, 2026 01:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working core zeph-core crate rust Rust code changes size/M Medium PR (51-200 lines)

Projects

None yet

1 participant