Skip to content

Bundled third-party gitops-repo-audit skill evaluates an untrusted dotenv as shell #178

Closed as not planned

Description

@devantler

🤖 Generated by the Agentic Engineer

Evidence

A CodeRabbit 🟠 Major review finding on #162 flags load_envsubst() in the bundled gitops-repo-audit skill: it evaluates the file passed to --envsubst as shell under set -o allexport, so validating a repository whose dotenv file has been modified can run arbitrary commands in the developer's or CI's process. I verified the code at the PR head — the finding is technically valid, not a false positive.

Why this is not a fix we can just make here

gitops-repo-audit is not ours. Its SKILL.md records metadata.github-repo: https://github.com/fluxcd/agent-skills, and its file history in this repository is a series of chore(deps): update agent skills sync commits. A patch applied here is re-pulled over by the next updater run — silently: no conflict, no CI failure, no signal. Sending the fix to the wrong repository is the failure mode the ownership rules exist to prevent, so this issue exists to stop the next reviewer or agent doing exactly that.

Who this affects

Anyone who runs the gitops-repo-audit skill against a repository they do not fully control, plus any CI that does. We ship the skill, so bundling it is our decision even though the code is not.

Options

  1. Report it upstream to fluxcd/agent-skills. The right long-term home. Opening an issue or PR on a third-party repository is gated on the maintainer clearing the professional-work boundary for that repository and then approving the artifact, so an unattended run cannot do this — it needs a decision.
  2. Stop bundling the skill (or the script) until upstream fixes it.
  3. Carry a local patch the updater will not revert — only viable if the updater grows a way to pin or exclude a file; otherwise it is option 1 with extra steps.

Acceptance criteria

  • A decision is recorded on which of the three options we take.
  • If option 1: the upstream report exists and is linked here, and this issue carries a conforming **Blocker:** line naming it.
  • If option 2: the skill or script is no longer shipped from this marketplace, and the removal is reflected in the plugin README and manifest.
  • The CodeRabbit thread on chore(deps): update agent skills #162 is not re-opened by a later sync silently re-introducing the same code without anyone noticing.

Size

Small for the decision; the work depends entirely on which option is chosen.

Part of #38

Activity

  1. moved this to 📥 Backlog in 🌊 Project Boardon Sep 1, 2026
  2. coderabbitai commented on Sep 1, 2026

    @coderabbitai
    ⚠️ Possible Duplicate Issue(s)

    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  3. devantler commented on Sep 5, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Closing as a duplicate of #164 — the decision this issue asked for has been taken

    Option 2 was chosen and shipped. #184 (merged 2026-09-02T02:28Z, one day after this issue was filed) retired the bundled gitops-repo-audit skill and published gitops-kubernetes under a fresh version, so the marketplace no longer ships the -E dotenv sink. Verified today against main @ 744f0e06: no gitops-repo-audit path exists anywhere in the tree.

    Against the acceptance criteria:

    What remains — whether to authorize the upstream fluxcd/agent-skills report, and the sibling copy still live in devantler-tech/platform — is exactly #164's scope, so keeping two issues open for one decision only recreates the four-way duplication #164 already had to consolidate.

  4. moved this from 📥 Backlog to ✅ Done in 🌊 Project Boardon Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Fields

    No fields configured for Security.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions