Skip to content

Pin or report the cdidx executable used by generated hooks #4892

Description

@Widthdom

Summary

Generated hooks invoke unqualified cdidx, so PATH changes can select a different version or no executable at all.

Audit IDs: O-37. Reproduced with locally built cdidx v1.40.3 at 404db09489c305f17d94f37026e00564d3ac527a.

Existing issue relationship

Follow-up adjacent to closed #4596, #4340, and #4716's hook installation/provenance work.

Expected behavior and PR scope

Generated hooks must have an explicit, inspectable executable provenance strategy—safe pinned path or configured resolver—and status must diagnose missing/version-skew cases.

Implementation guide for Codex 5.6 sol xhigh

  • Choose a cross-platform quoting/path strategy and define relocation/upgrade behavior.
  • Avoid embedding an unsafe mutable PATH lookup unless it is deliberate and reported.
  • Expose resolved path/version/source in hook install/status/dry-run with support-safe redaction.
  • Cover spaces/symlinks, moved installs, multiple versions, missing executable, Windows command wrappers, and chain hooks.
  • Add focused regression/contract tests, run the full net8.0 and net9.0 suite, and add the required bilingual changelog.d/unreleased/ fragment.

Acceptance criteria

  • A generated hook deterministically selects the intended cdidx.
  • Status identifies the actual path/version or a clear failure.
  • Paths are safely quoted and redacted according to policy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    .NETPull requests that update .NET codeenhancementNew feature or requestsecurity

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions