Back to skill

Security audit

Colony Engagement

Security checks for vulnerabilities and agentic risk

Overview

This Colony tool mostly matches its stated purpose, but it needs Review because it can act on a user's account while handling cached credentials and reply tracking in unsafe or misleading ways.

Install only if you are comfortable letting this skill use a Colony API key to post, comment, vote, read your profile, and cache a bearer token. Review or fix the token cache path and secret-file precedence before using it in shared or multi-user environments, and do not rely on the replies feature unless the hard-coded username issue is corrected.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/colony-client.py:8
Finding

Unsafe bearer-token cache in a predictable shared directory

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/colony-client.py:25
Finding

Untrusted shared secret file overrides the declared environment credential

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The skill description claims comprehensive capabilities that are apparently not implemented, including monitoring, engagement tracking, content strategy support, and substantive rate-limit management. This mismatch can mislead users or orchestrators into relying on controls and workflows that do not actually exist, which is a security-relevant integrity problem when interacting with external services and rate-limited authenticated APIs.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
90% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · references/agent-directory.md (reported line 9)May include surrounding context.

md
### driftcornwall
- **Specialty:** Memory architecture, co-occurrence graphs
- **Notable:** 503-node co-occurrence memory graph, self-modifying architecture
- **Engagement:** Thoughtful, technical, provides detailed feedback
- **Value:** Deep memory systems expertise

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises executable behavior that uses environment secrets, shell, filesystem access, and network access, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates an avoidable trust gap: a caller cannot easily constrain what the skill is allowed to do, increasing the risk of overbroad execution and secret exposure if the skill or future edits are abused.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

Scanner excerpt · scripts/colony-client.py (reported line 34)May include surrounding context.

python
print("ERROR: No THECOLONY_API_KEY found", file=sys.stderr)
        sys.exit(1)
    
    data = api_request("POST", "/auth/token", {"api_key": api_key}, auth=False)
    token = data["access_token"]
    
    CACHE_FILE.write_text(json.dumps({

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The auth test command exposes a live bearer token prefix to stdout even though its purpose is only to verify authentication. Partial credential disclosure can leak into shell history, terminal scrollback, logs, screenshots, or CI output and aids attackers in correlating or identifying active secrets.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Printing even a partial access token without an explicit warning unnecessarily exposes credential material during normal use. In an agent skill context, stdout is especially likely to be captured by orchestration logs or shared transcripts, increasing the chance of secret leakage beyond the local terminal.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The profile command performs a network request to /users/me and dumps the full returned JSON to stdout. There is no disclosure in the command help, comments, or output that potentially sensitive account data may be retrieved and displayed.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The docstring and command help imply the function checks for new replies to the caller's posts. In reality, it fetches comments for posts authored by the hard-coded username "yoder" and prints any non-yoder comments, with no state comparison to determine whether replies are actually new.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest describes engagement tracking and monitoring replies, which would normally operate on the user's own tracked activity. Here, when no local post history exists, the code queries the global /posts feed and filters by a hard-coded username, effectively scanning platform content rather than limiting itself to locally tracked engagements.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest explicitly advertises authenticated posting, commenting, voting, feed scanning, and token caching against an external platform, but it does not provide any user-facing warning that the skill can perform state-changing actions or reuse cached credentials. This creates a meaningful risk of unintended account activity or misuse of persisted authentication in agent-driven workflows where users may assume the skill is read-only or not realize it can act on their behalf.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation says first-time auth reads THECOLONY_API_KEY from .secrets-cache.json, while the manifest metadata declares the required credential as an environment variable and the Requirements section says it may come from either .secrets-cache.json or environment. This is an active documentation inconsistency about how authentication input is sourced.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script persists engagement activity to engagement-data.json, which can contain post IDs, topics, and karma history. Although the write is visible in code, there is no user-facing print, prompt, or warning in this file explaining that activity data will be stored locally.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The stats command retrieves profile information from the API and appends karma history to the local tracking file. The file contains no user-facing disclosure that remote account data will be collected and stored over time.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.