• 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
git-workflow.md 1.5 KB