Skip to content

v1.4.0 — Copilot settings hooks and MCP credential check

Latest

Choose a tag to compare

@cursor cursor released this 02 Sep 19:54
· 17 commits to master since this release
d040592

Closes two coverage gaps left after the 2026-09-02 re-verification, then ships everything that sat in Unreleased: the seven false-positive corrections, plan 038 content hashes and verbatim fixtures, and #13 Windsurf Cascade hooks / skills. 103 checks, 532 tests. Still offline on check.

Install

npx @chimix/agentscan@latest
npx skills add SimaAlexandru99/agentscan

GitHub Action:

- uses: SimaAlexandru99/agentscan@v1
  with:
    fail-on: error

Skill: https://skills.sh/simaalexandru99/agentscan/agentscan

Added

  • Copilot CLI inline hooks in .github/copilot/settings.json and .github/copilot/settings.local.json (always copilot-cli, source copilot-settings). User $COPILOT_HOME/settings.json or ~/.copilot/settings.json under --global. Same-event hooks from settings and .github/hooks coexist. $COPILOT_HOME is honored for user hook files too. .claude/settings.json stays on the Claude profile. Policy and plugin hook files stay unread.
  • mcp.literal-credential (security, warning): secret-named string values under MCP headers, http_headers, or auth that are not interpolation. Field paths only; values never echoed. Grok {{var}}, Gemini %VAR%, and the existing ${VAR} / ${env:} / ${input:} forms are interpolation. Token-shaped literals still fire security.hardcoded-secret first.
  • bun run spec:check hashes the prose of every source page in scripts/spec-surfaces.ts (35 unique URLs) and compares against scripts/spec-hashes.json. bun run spec:record rewrites the baseline after a human has re-read the page. Page text is never stored.
  • Conformance fixtures carry the vendors' own examples verbatim, with a minimum fact count per fixture so a discovery regression cannot keep a fixture green.

Fixed

  • commandcode.mcp.invalid-transport no longer fires on "type": "streamable-http" in a shared .mcp.json, or on sse in Command Code-only files.
  • agent-skills.skill.invalid-name accepts lowercase letters from any script (résumé-builder).
  • copilot.hook.command-without-command accepts the documented exec (+ args) form.
  • copilot.hook.unknown-event accepts PascalCase spellings of Copilot-only events in version: 1 files: SessionEnd, PostToolUseFailure, ErrorOccurred, PermissionRequest.
  • mcp.literal-env treats Gemini CLI's Windows %VAR_NAME% form as interpolation.
  • commandcode.agent.invalid-permission-mode accepts inherit.

Changed

  • Spec captures re-read on 2026-09-02; spec:check now also diffs Copilot PascalCase aliases and exits 1 when a source page's content hash has moved.

From #13 — true findings and Windsurf Cascade hooks / skills

  • .agentscan-root stops walk-up. Fenced SKILL.md examples, unclosed YAML, invalid Windsurf rule YAML, node . / ".", and outbound skill-directory symlinks no longer produce false findings.
  • Windsurf Cascade hooks: .windsurf/hooks.json and --global ~/.codeium/windsurf/hooks.json.
  • Windsurf Cascade skills: .windsurf/skills and --global ~/.codeium/windsurf/skills.