Skip to content

fix(security): lock down csv-gridsheet AI execution and update vulnerable deps - #151

Merged
righ merged 1 commit into
masterfrom
fix/security-hardening
Oct 7, 2026
Merged

righ merged 1 commit into
masterfrom
fix/security-hardening

Conversation

@righ

@righ righ commented Oct 7, 2026

Copy link
Copy Markdown
Member

Summary

csv-gridsheet (0.4.1)

  • Workspace → command execution: every gridsheet.ai.* setting that chooses a binary, its flags, enabled tools or cwd (custom, *.path, *.extraArgs, *.omitArgs, claude.permissionMode, claude.tools.*, codex.sandbox, codex.ignoreUserConfig, workingDirectory) is now machine-scoped and listed in capabilities.untrustedWorkspaces.restrictedConfigurations. Before, a repo's .vscode/settings.json could set e.g. gridsheet.ai.custom: {"X": "sh -c ..."} and a CSV containing =X() ran it on open (eager evaluation).
  • AI batches are refused in Restricted Mode.
  • New gridsheet.ai.confirmBeforeRun (default on, machine-scoped): the host asks once per file before AI functions run; allowed files are remembered until restart, denials are not. Gate lives in the extension host, not the webview.

Dependencies

  • preact → ≥10.26.10 (JSON VNode Injection, bundled into the extension webview); preact-core peer ^10.26.10.
  • vite / vitest / storybook / playwright / vue updated within their majors.
  • Same-major pnpm.overrides for vulnerable transitive deps (minimatch, brace-expansion, picomatch, js-yaml, form-data, ws, lodash, undici, devalue, …).
  • storybook: pin react/react-dom to 18 and dedupe @codemirror/state|view — re-resolution otherwise pulled react-dom 19.3 and a second @codemirror/state, breaking stories.

pnpm audit: 6 critical / 65 high → 2 critical / 2 high. Remaining: tinypool (needs vitest 4, dev-only), braces and http-cache-semantics (no fixed release).

Test plan

  • pnpm build:all, pnpm jest, pnpm typecheck:all, pnpm lint
  • pnpm --filter csv-gridsheet build
  • e2e against a fresh Storybook build: 107 passed

🤖 Generated with Claude Code

…able deps

csv-gridsheet:
- Make settings that choose a command, its flags, tools or cwd machine-scoped
  and declare untrustedWorkspaces restrictedConfigurations, so a repository's
  .vscode/settings.json can no longer point an AI function at its own command.
- Refuse AI batches in Restricted Mode.
- Add gridsheet.ai.confirmBeforeRun (default on, machine-scoped): ask once per
  file before AI functions run.
- Bump to 0.4.1.

Dependencies:
- preact >=10.26.10 (JSON VNode Injection); raise preact-core peer range.
- Update vite, vitest, storybook, playwright, vue within their majors.
- Add same-major pnpm overrides for vulnerable transitive deps.
- Pin storybook's react/react-dom to 18 and dedupe @codemirror/state|view so
  stories keep rendering after re-resolution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@righ
righ merged commit 678ecfd into master Oct 7, 2026
13 checks passed
@righ
righ deleted the fix/security-hardening branch October 7, 2026 20:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant