chore: update fullsend per-repo installation - #52
Conversation
PR Summary by QodoScaffold fullsend per-repo installation configuration and workflow
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1. Unpinned external workflow
|
| contents: write | ||
| issues: write | ||
| packages: read | ||
| pull-requests: write | ||
| uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@v0 |
There was a problem hiding this comment.
1. Unpinned external workflow 🐞 Bug ⛨ Security
The dispatch job executes a reusable workflow from another repository pinned only to the mutable ref @v0 while granting contents/issues/pull-requests: write and forwarding multiple secrets. If that ref is moved or the upstream repo is compromised, arbitrary workflow code could run with this repo’s token permissions and whatever forwarded secrets are available for the triggering event.
Agent Prompt
### Issue description
The workflow calls an external reusable workflow (`fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@v0`) using a mutable ref while granting broad write permissions and passing secrets. This creates a supply-chain risk because the exact executed workflow content can change without review in this repo.
### Issue Context
- The caller job’s `permissions` apply to the called reusable workflow.
- Secrets explicitly mapped under `secrets:` are forwarded to the reusable workflow when available for the event.
### Fix Focus Areas
- `.github/workflows/fullsend.yaml[41-59]`
### What to change
1. Pin the reusable workflow to an immutable commit SHA (or a verifiably immutable, protected ref) instead of `@v0`.
2. Reduce `permissions:` to the minimum required by the reusable workflow (ideally start from `contents: read` and add only what is strictly necessary).
3. Forward only the secrets that are strictly required; if some are optional, consider guarding the job (or failing fast with a clear message) when required secrets/vars are not configured.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
The default branch (main) has branch protection rules that prevent direct pushes.
Merge this PR to deliver the scaffold files.