Skip to content

Tighten audit recipe origins and semantic targeting #4416

Description

@Widthdom

Summary

Several source audit queries rank comments, safe wrappers, sanitizer vocabulary, or parser identifiers instead of executable risk sites: raw-diagnostic-echo, unbounded-json-parse, file-read-all-bytes, environment-secret-source, credential-term, process-argument-list, watcher-boundary, channel-boundary, and StringBuilder materialization. Add code/call-site origin constraints and positive-evidence exclusions.

Evidence source

Dogfooded with the locally built cdidx 1.37.2 on origin/main 098db58. Full tests passed before audit.

Duplicate check

No open issues existed at filing time; closed issues were intentionally not used as blockers per filing instructions.

Additional origin-classification gap

MCP tool schema descriptions embedded in production string literals are classified as ordinary string_literal origins. Risk recipes can therefore match example code such as new HttpClient inside tool descriptions. Add a help-like or schema_description origin so implementation audits can exclude these examples without dropping real runtime strings. Evidence: src/CodeIndex/Mcp/McpToolDefinitions.cs.

Additional exhaustive-audit evidence

A second full recipe pass produced 95 draft candidates that collapse into the same origin/positive-evidence problem rather than 95 independent defects. The affected families include process/subprocess policy, plugin and hook lifecycle, regex timeout policy, JSON/stream materialization, SQLite command policy, cancellation and broad-catch review, secret/auth vocabulary, path-case probes, recursive deletion, and resource ownership.

Representative safe or policy-bearing paths include BoundedJson.cs, BoundedRegex.cs, SqliteCommandPolicy.cs, ProcessLaunchPolicy.cs, SubprocessEnvironmentPolicy.cs, DiagnosticRedactor.cs, SensitiveNameClassifier.cs, and ExtensionAssemblyLoadContext.cs. Recipe issue-drafts should distinguish an unsafe call site from the implementation of the safety wrapper or policy itself, and should avoid producing both a family-level draft and redundant per-file drafts for the same evidence.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcodex

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions