You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 58613ef
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,13 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
6
6
7
7
## Unreleased
8
8
9
+
### Security
10
+
11
+
- Updated transitive `js-yaml` and `undici` development dependencies to remediate current high-severity advisories
12
+
- Added behavioral regression coverage proving that programmatic launches remain blocked in untrusted workspaces and workspace-controlled commands are ignored
13
+
- Added a weekly lockfile security audit without re-enabling periodic dependency version-update pull requests
14
+
- Expanded required `main` checks to cover dependency auditing, compatibility, and CodeQL, and applied branch protection to administrators
No critical runtime vulnerability was identified. The extension remains a small, transparent terminal launcher with no production dependencies, network access, hidden process execution, telemetry, or credential handling.
9
9
10
-
The review found two high-severity advisories in transitive development dependencies, one CI supply-chain hardening opportunity, and one test-isolation issue. All were remediated without changing runtime behavior. The final npm audit reports zero known vulnerabilities.
10
+
The 2026-08-08 follow-up found two newly disclosed high-severity advisories in transitive development dependencies, incomplete required-check coverage on `main`, and a behavioral test gap around Workspace Trust. All were remediated without changing runtime behavior. The final npm audit reports zero known vulnerabilities.
11
11
12
12
## Critical Findings
13
13
@@ -26,7 +26,19 @@ Resolution:
26
26
-`brace-expansion` is locked to 5.0.9 (`package-lock.json:1510`).
27
27
-`fast-uri` is locked to 3.1.5 (`package-lock.json:2167`).
28
28
-`npm run check:security` now audits the lockfile at high severity (`package.json:127`).
29
-
- CI and release jobs run the audit before accepting or publishing artifacts (`.github/workflows/ci.yml:104`, `.github/workflows/release.yml:42`).
29
+
- CI and release jobs run the audit before accepting or publishing artifacts (`.github/workflows/ci.yml:109`, `.github/workflows/release.yml:42`).
30
+
31
+
### SEC-007: Newly disclosed `js-yaml` and `undici` advisories — resolved
32
+
33
+
**Impact:** Malicious inputs reaching affected build-tool paths could cause denial of service or HTTP parsing and cache-safety failures during development or packaging; the extension runtime was not exposed because neither package is shipped in the VSIX.
34
+
35
+
The follow-up audit reported `js-yaml` 4.3.0 (GHSA-5p4m-2wfm-xmqj) and `undici` 7.28.0, including GHSA-4cwx-7wf7-3272. Both were transitive development dependencies under `@vscode/vsce`.
36
+
37
+
Resolution:
38
+
39
+
-`js-yaml` is locked to 4.3.1 (`package-lock.json:2748`).
40
+
-`undici` is locked to 7.29.0 (`package-lock.json:4580`).
41
+
-`npm audit --omit=dev` and the full locked dependency audit both report zero known vulnerabilities.
30
42
31
43
## Medium-Severity Findings
32
44
@@ -36,9 +48,18 @@ The CI workflow referenced `actions/checkout@v7` and `actions/setup-node@v6`. Ma
36
48
37
49
Resolution:
38
50
39
-
- All checkout and Node setup steps are pinned to verified full commit SHAs, with their major release retained in same-line comments for maintainability (`.github/workflows/ci.yml:32`, `.github/workflows/ci.yml:35`, `.github/workflows/release.yml:21`, `.github/workflows/release.yml:24`).
51
+
- All checkout and Node setup steps are pinned to verified full commit SHAs, with their major release retained in same-line comments for maintainability (`.github/workflows/ci.yml:36`, `.github/workflows/ci.yml:39`, `.github/workflows/release.yml:21`, `.github/workflows/release.yml:24`).
40
52
- Default workflow permissions remain read-only; only the release job receives scoped `contents: write` permission (`.github/workflows/release.yml:8`, `.github/workflows/release.yml:16`).
41
53
54
+
### SEC-008: Incomplete required-check coverage on `main` — resolved
55
+
56
+
Branch protection required only the Windows and Linux validation jobs. A pull request could therefore remain mergeable when dependency auditing, compatibility, or CodeQL checks failed.
57
+
58
+
Resolution:
59
+
60
+
- Required checks now include dependency auditing, stable macOS, minimum VS Code compatibility, and both CodeQL analyses in addition to Windows and Linux validation.
61
+
- Branch protection is enforced for administrators, while one approving review, stale-review dismissal, conversation resolution, linear history, and force-push/deletion blocking remain enabled.
62
+
42
63
## Low-Severity Findings
43
64
44
65
### SEC-003: VS Code type definitions could drift beyond the supported minimum — resolved
@@ -60,6 +81,25 @@ Resolution:
60
81
- The test now saves the exact `globalValue` returned by `configuration.inspect(...)` and restores that value after the smoke test (`test/integration/suite/index.js:30`, `test/integration/suite/index.js:46`).
61
82
- The integration runner now reports failures explicitly and sets a non-zero process exit code, so CI cannot depend on unhandled-rejection behavior (`test/integration/runTest.js:24`).
62
83
84
+
### SEC-009: Workspace Trust invariant had only structural coverage — resolved
85
+
86
+
The metadata test confirmed that trust and terminal calls existed in the source but did not execute the registered command in an untrusted state. A misplaced future check could therefore satisfy the regular expression without preserving the security boundary.
87
+
88
+
Resolution:
89
+
90
+
- A behavioral test invokes the registered command callback with `workspace.isTrusted` false and verifies that configuration is not resolved, no terminal is created, and no text is sent (`test/extension.test.js:83`).
91
+
- A trusted-path companion test verifies that the global user command is sent while a hostile workspace value is ignored (`test/extension.test.js:103`).
92
+
93
+
### SEC-010: Dependency audit ran only after repository activity — resolved
94
+
95
+
New advisories disclosed after the last push could remain visible only as repository alerts until another branch or pull-request run occurred.
96
+
97
+
Resolution:
98
+
99
+
- CI now runs the locked dependency audit every Monday and supports manual dispatch (`.github/workflows/ci.yml:8`).
100
+
- Scheduled runs skip the Extension Host platform matrix and execute only the dependency audit (`.github/workflows/ci.yml:21`, `.github/workflows/ci.yml:56`).
- review of GitHub workflow permissions, triggers, and immutable action references.
130
+
- live verification of required branch checks, review enforcement, CodeQL, secret scanning, and push protection.
90
131
91
132
This review covers the launcher repository only. Kimi Code CLI, VS Code, compatible editors, user shell configuration, and external providers remain outside its trust boundary.
0 commit comments