• Will Chen's avatar
    Relax shell injection checks in permission hooks (#2653) · 42531151
    Will Chen 提交于
    ## Summary
    - Add `$(cat ...)` as a safe command substitution pattern in the gh
    permission hook, allowing commands like `gh api graphql -f query="$(cat
    /tmp/query.graphql)" > /tmp/output.json` to passthrough instead of being
    blocked
    - Add safe pipe and redirect handling to the python permission hook,
    allowing pytest commands with `2>&1 | tail` output formatting patterns
    - Move `| cat` from blocked to allowed in python hook tests since `cat`
    is a safe read-only command
    
    #skip-bugbot
    
    ## Test plan
    - [x] All gh permission hook tests pass (572 good commands, 406 bad
    commands)
    - [x] All python permission hook tests pass (good, bad, passthrough,
    security-blocked)
    - [x] npm test passes (803 tests)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2653"
    target="_blank">
      <picture>
    <source media="(prefers-color-scheme: dark)"
    srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
    <img
    src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
    alt="Open with Devin">
      </picture>
    </a>
    <!-- devin-review-badge-end -->
    
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Relaxed shell injection checks in GH and Python permission hooks to
    allow common read-only patterns like $(cat ...), pipes to safe tools,
    and simple redirects. This reduces false blocks while keeping unsafe
    substitutions and pipelines guarded.
    
    - **Bug Fixes**
    - GH hook: treat $(cat ...) as a safe command substitution and
    neutralize it before checks.
    - Python hook: allow pipes to common text tools (e.g., tail, grep, cat)
    and redirects like 2>&1 and >/dev/null.
    - Tests: move python `| cat` to allowed; add cases for gh `$(cat ...)`
    and pytest `2>&1 | tail`.
    
    <sup>Written for commit b1695c6e09bdc58288197ae2ab79745947fcca59.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    Co-authored-by: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
    42531151
名称
最后提交
最后更新
.claude 正在载入提交数据...
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
.storybook 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
makers 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
rules 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.npmrc 正在载入提交数据...
.oxfmtrc.json 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CLA.md 正在载入提交数据...
CLAUDE.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
lint-staged.config.js 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...
windowsSign.ts 正在载入提交数据...