Skip to content

Releases: k9securityio/reachable-risk-triage-action

v1.0.5

Choose a tag to compare

@skuenzli skuenzli released this 23 Oct 16:02
24558ee

Docs

  • Marketplace card description now names CVE and vulnerability alerts, so the listing matches searches that use those words. This is a metadata-only action.yml change, and the action's runtime behavior is unchanged.

v1.0.4

Choose a tag to compare

@skuenzli skuenzli released this 22 Oct 23:14
d53593b

What's Changed

  • docs: frame the Marketplace description and README around risk by @skuenzli in #8. This change is metadata only, runtime behavior is the same.

Full Changelog: v1.0.3...v1.0.4

v1.0.3

Choose a tag to compare

@skuenzli skuenzli released this 22 Oct 21:40

Docs

  • Marketplace card description leads with what the action does: prioritize Dependabot alerts by what your code can reach. This is a metadata-only action.yml change, and the action's runtime behavior is unchanged.
  • README: new "Triage Dependabot alerts by reachability" section with a sample report and a live public user (cedar-py); plan pricing stated in Prerequisites; style sweep.

v1.0.2

Choose a tag to compare

@skuenzli skuenzli released this 15 Oct 02:07

Fixes

  • The k9 MCP server works on the org-billed Copilot path (CLOUD-4199). With the default auth (the Actions token plus copilot-requests: write, billed to a Copilot Business/Enterprise plan), Copilot CLI 1.0.80 couldn't fetch the organization's MCP registry policy (HTTP 403) and blocked every non-default MCP server: 1 MCP server was blocked by policy: 'k9'. The agent then couldn't score anything. The action now pins Copilot CLI 1.0.98, which resolves this (35b4993).
  • Your deps-command and test-command run as written (f71e2f2, fba4db8). Copilot CLI 1.0.98's permission judge denied some shell commands in unattended runs, including python -m pip and python -m pytest, even with shell allowed. The agent then improvised other command forms. The action now runs the CLI with --allow-all-tools --allow-all-paths. See Behavior changes.
  • Agent work stays on your configured model (f71e2f2). Copilot CLI's task-tool subagents ignored --model and picked the strongest model the organization allows (observed: Opus), which raised the cost per run. They also worked without the k9 reachability guidance in context. The action now runs the CLI with --excluded-tools task.

Behavior changes

  • Agent permissions: --allow-all-tools --allow-all-paths replaces --allow-tool 'k9' --allow-tool 'shell' --allow-tool 'write'. The agent already had unrestricted shell, so the ephemeral runner, not the tool list, is the containment boundary. All-paths also lets reachability analysis read installed dependency trees outside the workspace. URLs stay restricted (no --allow-all-urls): the agent holds tokens, so arbitrary fetches stay off.
  • New step "Report denied agent commands": if Copilot CLI denies any agent command, the run logs a ::warning:: and lists the commands in the job summary. Review them before trusting that run's reachability or test results (fba4db8).

Docs

  • Runner support policy: the action supports the Ubuntu images GitHub currently supports, today ubuntu-24.04 and ubuntu-26.04 (ubuntu-latest resolves to one of them). It's tested on x64 (92fde83, CLOUD-4198).
  • Run triage like your CI: give the triage job the same runs-on and toolchain setup steps as the CI job that runs your tests. The example workflow shows an optional checkout plus setup-step slot (92fde83).
  • Copilot plan options: a Business/Enterprise plan on the repo-owning org is recommended, because usage is billed to the organization. copilot-github-token is still supported for a user with an individual Pro, Pro+ or Max plan, billed to that user's plan (81fe350, PR #4).
  • New troubleshooting rows: triage vs. CI setup drift; blocked by policy: 'k9'; Third-party MCP servers are disabled…; a lapsed individual plan; the denied-agent-commands warning (92fde83, 81fe350, 6d3fd08, d7420ab).
  • README onboarding revision: runnable quickstart, verification steps, style sweep, free-to-start plan note (8d53e07, 9a93da9).

CI

  • lint-and-audit runs on a matrix of ubuntu-24.04 and ubuntu-26.04 (eb0efb2). actionlint (≤1.7.12) doesn't know the ubuntu-26.04 label yet, so a narrow ignore handles it.

Verified

End-to-end triage runs (rr-triage-fixture, fix-PR path, org-billed Copilot Business, same action.yml/scripts//prompts/ as this release):

Both were green with 0 denied agent commands. Configured deps/test commands ran as written, a fix PR opened only after tests passed, and no subagents ran.

Pin: k9securityio/reachable-risk-triage-action@d40f4e01651ab8274a2cecbb66e0f43fba9bb839 # v1.0.2

v1.0.1

Choose a tag to compare

@skuenzli skuenzli released this 18 Aug 16:10

Fixes

  • Deterministic run-date stamp (07b6743): the action now stamps triage-summary.json's date field from the runner's UTC clock after the agent run. A prior run wrote the rubric version's date instead of the run date, and it rendered straight onto the Teams card; the prompt-level instruction alone did not hold.

Docs

  • action.yml description corrected: the action opens tested fix PRs for actionable findings (it does not file GitHub issues) (91cbcbc).
  • README caller-workflow description corrected (91cbcbc).

Pin: k9securityio/reachable-risk-triage-action@07b6743c2b19bd640a29080b2f51ea1bb869e457 # v1.0.1

v1.0.0

Choose a tag to compare

@skuenzli skuenzli released this 18 Aug 03:49

Initial release of the Reachable Risk Triage action.

Scheduled, agent-driven triage of your repository's Dependabot alerts with the k9 Security Reachable Risk rubric: scores every open alert (severity is not risk), publishes a full triage report to the job summary and a run artifact, opens one tested fix PR per package with actionable findings, and posts the outcome to Microsoft Teams. REVIEW verdicts are never acted on; nothing is merged or dismissed by the action.

  • Agent: GitHub Copilot CLI via the required agent input (the seam for Claude Code / Opencode support); model is likewise explicit — the caller always states what runs.
  • Requires: a k9 Security account with Reachable Risk, a fine-grained PAT (Dependabot alerts: read, Contents: write, Pull requests: write), and your repo's dependency-install and test commands.
  • Setup: copy examples/dependency-triage.yml and follow the README.

Pin @v1 for fixes without edits, @v1.0.0 or the release SHA for strict pinning policies.