T09 · Insecure Skill Coding Practices
- Location
scripts/github_team.py:231- Finding
Partial GitHub Token Disclosure Through Standard Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This GitHub collaboration skill is mostly purpose-aligned, but it can make real repository changes and partially prints a GitHub token without enough safeguards.
Review before installing. Use a least-privilege GitHub token, avoid running the script directly until token-prefix printing is removed, and require explicit user confirmation for any operation that creates issues, assigns reviewers, or changes repository settings. Pin dependencies before production use.
scripts/github_team.py:231Partial GitHub Token Disclosure Through Standard Output
requirements.txt:1Unpinned Third-Party Dependencies Permit Unreviewed Future Releases
The natural-language content of the skill documentation is entirely in Chinese after the English title, with no indication that users may choose another language. This can violate language/locale policy when a skill imposes a specific language without user opt-in or documented regional justification.
This markdown file documents capabilities such as repository management, release management, and webhook configuration, all of which can affect system integrity or project operations. The description does not include any caution that these actions may change repository state, permissions, or automation behavior.
The skill documents code that uses environment variables for authentication and GitHub API/network access, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates an authorization gap where an agent may invoke capabilities broader than a user expects, increasing the risk of unintended token access or outbound actions against GitHub.
The activation text is broad enough to match many ordinary software-team requests, which can cause the skill to be selected in situations beyond its narrowly intended use. Because this skill supports repository management, workflow automation, release management, and webhook configuration, over-broad activation increases the chance of invoking networked, potentially write-capable GitHub operations in the wrong context.
The assign_reviewers function directly modifies GitHub pull request state by assigning reviewers, but it does so without any confirmation or approval barrier in the function. In an agent-driven workflow, this can cause unauthorized or accidental workflow changes, notification spam, and trust erosion in repository processes.
The create_issue function performs a state-changing POST request to GitHub without any built-in confirmation, dry-run mode, or explicit user-consent guard. In an agent context, this increases the risk of unintended repository modifications, spam issue creation, or misuse if the function is invoked from loosely validated prompts or automations.
The main test block prints the first 10 characters of the GitHub token, which unnecessarily discloses secret material to logs or terminal history. Even partial token exposure can aid credential correlation, token identification, or leakage through shared CI logs, and it is unrelated to the skill’s collaboration functionality.
The dependency is specified with a lower bound only, which allows future installs to resolve to different versions over time. This weakens build reproducibility and can unintentionally introduce vulnerable or breaking releases into the skill's environment.
requests>=2.28.0
python-dateutil>=2.8.0
The manifest references requests without pinning to a reviewed version, and the package has multiple historical advisories. Because the resolved version is not fixed, it is impossible to verify from this file alone whether deployments may include an affected release, which creates avoidable supply-chain exposure.
The dependency is not pinned to an exact version, so installations are not deterministic and may pull in unexpected future releases. This creates supply-chain and stability risk because the deployed package set can vary across environments and over time.
requests>=2.28.0
python-dateutil>=2.8.0
The get_github_token function reads the GITHUB_TOKEN environment variable, which is a sensitive credential. Aside from a brief docstring, there is no meaningful safety warning about credential usage, scope, or handling in the skill code.
No suspicious patterns detected.