Repository navigation
Releases: k9securityio/reachable-risk-triage-action
Release list
v1.0.5
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.ymlchange, and the action's runtime behavior is unchanged.
v1.0.4
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
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.ymlchange, 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
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-commandandtest-commandrun as written (f71e2f2, fba4db8). Copilot CLI 1.0.98's permission judge denied some shell commands in unattended runs, includingpython -m pipandpython -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--modeland 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-pathsreplaces--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.04andubuntu-26.04(ubuntu-latestresolves to one of them). It's tested on x64 (92fde83, CLOUD-4198). - Run triage like your CI: give the triage job the same
runs-onand 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-tokenis 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-auditruns on a matrix ofubuntu-24.04andubuntu-26.04(eb0efb2). actionlint (≤1.7.12) doesn't know theubuntu-26.04label 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):
- ubuntu-24.04: https://github.com/k9securityio/rr-triage-fixture/actions/runs/38659441800
- ubuntu-26.04: https://github.com/k9securityio/rr-triage-fixture/actions/runs/38660421501
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
Fixes
- Deterministic run-date stamp (07b6743): the action now stamps
triage-summary.json'sdatefield 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
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
agentinput (the seam for Claude Code / Opencode support);modelis 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.ymland follow the README.
Pin @v1 for fixes without edits, @v1.0.0 or the release SHA for strict pinning policies.