Skip to content

fix(guard): scrub denied keys from search results (I14) - #4

Merged
plusky merged 1 commit into
mainfrom
fix/search-i14-scrub
Aug 8, 2026
Merged

fix(guard): scrub denied keys from search results (I14)#4
plusky merged 1 commit into
mainfrom
fix/search-i14-scrub

Conversation

@plusky

@plusky plusky commented Aug 8, 2026

Copy link
Copy Markdown
Owner

search_filtered requested issuelinks,parent,subtasks (they ride along in CLASSIFY_FIELDS) and returned Read-granted issues verbatim, so a denied issue's key could reach the client inside a visible search hit — exactly the fields I14 names. issue_info and issue_history already scrubbed; search did not.

The search path now runs the same linked_keys / disclosable / scrub_links machinery as issue_info, bounded by the existing MAX_ASSESS_KEYS mechanics: candidate keys past the bound or whose classification fetch fails are scrubbed, not served.

Invariants: I14 (denied keys no longer appear in served link fields on the search path), I3 (no scrubbed/dropped counts surface to the client; audit only), I4 (undecidable candidates scrub).

Tests: new wiremock coverage exercising search_filtered end-to-end (issues_search returns window.issues verbatim, so this pins the client-visible surface); confirmed to fail against the unfixed code.

Process: AI-assisted — implemented and independently adversarially reviewed against docs/DESIGN.md (verdict: approve, with an empirical pre-fix-failure check). Full verification suite green at the commit.

search_filtered now runs the same linked_keys/disclosable/scrub_links
pass as issue_info, so issuelinks/parent/subtasks on served search
results cannot name policy-denied keys (I14). Assessment fan-out is
bounded by MAX_ASSESS_KEYS; keys past the bound or with failed fetches
scrub fail-closed (I4). Scrubbed keys surface only in the audit stream,
never as counts or keys to the client (I3).
@plusky plusky added security Guard, key custody, or disclosure surface ai-assisted Found or drafted with AI assistance; claims verified against source, review independently labels Aug 8, 2026
@plusky
plusky enabled auto-merge (rebase) August 8, 2026 19:37
@plusky
plusky merged commit e23bc86 into main Aug 8, 2026
11 checks passed
@plusky
plusky deleted the fix/search-i14-scrub branch August 8, 2026 19:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-assisted Found or drafted with AI assistance; claims verified against source, review independently security Guard, key custody, or disclosure surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant