• Will Chen's avatar
    feat: broaden safe pipe whitelist in gh permission hook (#2581) · 7fb395bf
    Will Chen 提交于
    ## Summary
    - Expanded the safe pipe destinations whitelist in the GitHub CLI
    permission hook to include common text-processing commands like
    `base64`, `cat`, `column`, `fmt`, `fold`, `paste`, `strings`, checksum
    utilities, and more
    - Previously, commands like `gh api ... | base64 -d` were blocked
    because `base64` wasn't in the narrow allowlist
    
    ## Test plan
    - [x] Verified `gh api
    repos/dyad-sh/dyad/contents/.github/workflows/closed-issue-comment.yml
    --jq '.content' 2>&1 | base64 -d` no longer blocked
    - [x] All 784 unit tests pass
    - [x] Lint and type checks pass
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2581"
    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 -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > **Medium Risk**
    > Expands the set of commands permitted in piped shell invocations,
    which could widen the attack surface if the whitelist includes tools
    with unexpected side effects; changes are contained to the permission
    hook and docs.
    > 
    > **Overview**
    > Broadens the `gh` permission hook’s allowed pipe destinations from a
    small set of utilities to a larger whitelist of common text-processing
    commands (e.g., `base64`, `cat`, `column`, `strings`, and checksum
    tools), so more `gh ... | <tool>` pipelines are auto-approved.
    > 
    > Updates `rules/git-workflow.md` to document using `gh api
    .../issues/{PR_NUMBER}/labels` as a workaround for `gh pr edit
    --add-label` failing due to the GraphQL Projects (classic) deprecation
    error.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    775a7623ae7bd4b484cf09626f425aaa2912b8f1. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Broadened the GitHub CLI permission hook’s safe pipe whitelist to
    include more text-processing commands (e.g., base64, column, strings,
    checksum tools), allowing gh ... | base64 -d. Clarified allowed-pipe
    wording in the hook and updated git-workflow docs to use the REST API
    for adding labels due to GraphQL “Projects (classic)” errors.
    
    <sup>Written for commit 08eb796e50730e1e0ed78f2a55b2c9addb8c38cd.
    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>
    7fb395bf
名称
最后提交
最后更新
.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 正在载入提交数据...
.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 正在载入提交数据...