Back to skill

Security audit

Git Workflow

Security checks for vulnerabilities and agentic risk

Overview

This git workflow skill is mostly transparent, but it tells the agent to push commits to a remote repository automatically without asking.

Review this skill carefully before installing. It is suitable only if you want commit operations to publish immediately; otherwise, require the agent to ask before running git push, creating upstream branches, pushing tags, creating PRs, or publishing releases.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:72
Finding
Commit Requests Automatically Trigger Unauthorized Remote Pushes## Vulnerability Details **File Location**: `SKILL.md`, lines 72-75 **Vulnerability Type**: `T05: Unauthorized Access and Privilege Escalation` **Risk Level**: Medium **Complete Code Snippet**: ```markdown - **Commit always pushes**: After commit, always push immediately. Do not ask. - Has upstream tracking → `git push` - No upstream tracking → `git push -u origin <branch>` ``` The behavior is operationalized again in the commit workflow at lines 105-108: ```markdown ### Commit (default: commit + push) ```bash git add <files> git commit -m "feat(component): add new feature" && git push ``` ``` ### Technical Analysis The skill treats permission to create a local commit as implicit authorization to modify a remote repository. This violates least privilege because committing and pushing are distinct operations with different effects and authorization boundaries. The skill's declared triggers include commit-only and commit-message requests, but the default workflow mandates an immediate push without asking the user. Consequently, an agent following these instructions can perform a network-visible, remote write that was neither necessary for nor explicitly authorized by the original task. ### Attack Path 1. A user asks the agent to create a local commit or otherwise invokes the commit workflow without requesting a push. 2. The working tree contains intended changes and may also contain accidentally staged, unfinished, or confidential files. 3. The skill stages and commits the selected changes. 4. The mandatory `git push` behavior executes without displaying the destination and obtaining confirmation. 5. The commit is published to the configured remote branch. 6. The remote write may expose data, affect collaborators, or activate repository automation such as CI/CD workflows. ### Impact Assessment The behavior can obtain and exercise the user's existing Git remote-write privileges beyond the sco ...[truncated 652 chars]
Remediation
## Remediation Suggestions - Separate local commit creation from remote push operations. - Remove the rule requiring every commit to be pushed automatically. - Push only when the user explicitly requests a push. - If push intent is ambiguous, display the remote, destination branch, and commits to be sent, then request confirmation. - Do not create upstream tracking branches without explicit authorization. - Before pushing, detect potentially sensitive committed files and warn the user where appropriate. - Keep commit-only requests local and report the resulting commit hash without performing network operations. - Revise the workflow example to: ```bash git add <files> git commit -m "feat(component): add new feature" # Run git push only when explicitly requested or confirmed. ```
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
There is a material description-behavior mismatch. The description presents a general-purpose git workflow skill to handle commits, pushes, PRs, releases, and changelog tasks. The actual code only validates commit message content and formatting. While commit-message validation could be a supporting sub-feature of a commit workflow, this chunk’s primary and sole behavior is linting commit messages, not executing git tasks. Additionally, it enforces a specific content policy against AI/Claude markers, which is not mentioned in the declared purpose. Therefore the declared description does not accurately represent what this code chunk actually does.

Lp3

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding
The skill omits an explicit tool scope/permissions declaration even though it instructs file-reading behavior and operational git workflows. Missing scope boundaries make it harder for the runtime or reviewer to constrain what the skill may access, increasing the chance of over-broad file access or future privilege creep when the skill is invoked.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill directs automatic `git push`, PR creation, and release publication without an explicit warning that these actions transmit code and metadata to a remote service. Because it also says 'After commit, always push immediately. Do not ask,' a user could unintentionally exfiltrate sensitive changes, secrets, or internal context to external repositories.

Static analysis

No suspicious patterns detected.