Back to skill

Security audit

Insurance Clause Talking Clips

Security checks for vulnerabilities and agentic risk

Overview

The skill is not clearly malicious, but it grants and uses broad Beatra account authority that goes beyond the narrow insurance clip workflow.

Review before installing. This skill should only be used if you are comfortable connecting a Beatra account with broad generation and spending authority, storing a shared device token locally, and allowing a bundled client with silent verified updates. Disable auto-updates if that is not acceptable, monitor credits, and revoke the device in the Beatra Console if you no longer trust the package.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/mcp_client.py:2299
Finding

Billable MCP operations can bypass the required user confirmation

Content
View full analysis

Vulnerability Details

File Location: scripts/mcp_client.py:2299-2316
Related Authorization Requirements: SKILL.md:104, SKILL.md:137
Vulnerability Type: Missing enforcement of user authorization for billable operations
Risk Level: Medium

Vulnerable code:

python
def _run_command(
    command: str,
    tool_name: str | None = None,
    arguments: dict[str, Any] | None = None,
) -> dict[str, Any]:
    session = _session_with_registration(
        state_dir=Path.home() / ".beatra",
        post_json=_default_post_json,
    )
    if command == "tools":
        return session.request(2, "tools/list", {})
    if arguments is None:
        arguments = _read_tool_arguments()
    assert tool_name is not None
    return session.request(
        2,
        "tools/call",
        {"name": tool_name, "arguments": arguments},
    )

The Skill instructions establish explicit approval gates before paid operations:

markdown
Show the speech card and wait:

and:

markdown
Show the video card and wait:

Technical Analysis

The command entry point accepts an unrestricted MCP tool name and a JSON argument object from standard input. It then forwards both directly to tools/call using the bearer credential stored in ~/.beatra/credentials.json.

The executable path does not distinguish read-only operations from billable operations such as voice cloning, speech synthesis, or video animation. It also does not require evidence that:

  • the user received the required six-field cost card;
  • the user explicitly approved the specific paid stage;
  • the approved operation matches the submitted tool and arguments;
  • the approved price, count, and request identity remain valid.

Consequently, the confirmation requirement exists only in the Skill documentation. A caller that invokes the bundled client directly can bypass it. The authorization helper obtains ...[truncated 1850 chars]

Remediation
View remediation

Remediation Suggestions

Enforce paid-operation approval in executable code rather than relying exclusively on Agent instructions:

  1. Maintain an explicit allowlist that classifies each MCP tool as read-only, non-billable, or billable.
  2. Reject billable call operations unless they include a short-lived approval artifact bound to:
    • the exact tool name;
    • a canonical hash of the complete arguments;
    • the current price and operation count;
    • the opaque client_request_id;
    • the authenticated account or installation;
    • an expiration time.
  3. Have the service issue or validate this approval artifact after the user approves the displayed cost card. Do not rely on a caller-provided Boolean such as confirmed: true.
  4. Invalidate the approval after use, or bind it to an idempotent request identity so it cannot authorize modified or additional work.
  5. Provide separate client entry points for read-only and billable operations. The billable entry point should fail closed when approval evidence is absent, expired, malformed, or does not match the request.
  6. Add tests proving that direct invocations of voice cloning, speech synthesis, video animation, and other spending-capable tools are rejected without valid operation-bound approval.
  7. Preserve the existing staged confirmations so approval for cloning, speech, or video cannot implicitly authorize another stage.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (35)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The same skill also documents uninstall and token-revocation behavior, including access to local application state and installed-skill inventory, despite being described as a video-generation skill. Embedding lifecycle-management and deletion capabilities inside a content-production skill increases the risk of unauthorized state changes or destructive actions if the skill is triggered in the wrong context.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The same skill also documents uninstall and token-revocation behavior, including access to local application state and installed-skill inventory, despite being described as a video-generation skill. Embedding lifecycle-management and deletion capabilities inside a content-production skill increases the risk of unauthorized state changes or destructive actions if the skill is triggered in the wrong context.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The same skill also documents uninstall and token-revocation behavior, including access to local application state and installed-skill inventory, despite being described as a video-generation skill. Embedding lifecycle-management and deletion capabilities inside a content-production skill increases the risk of unauthorized state changes or destructive actions if the skill is triggered in the wrong context.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · manifest.json (reported line 53)May include surrounding context.

json
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation-and-auth.md (reported line 14)May include surrounding context.

md
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation-and-auth.md (reported line 21)May include surrounding context.

md
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation-and-auth.md (reported line 53)May include surrounding context.

md
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/mcp-connection.md (reported line 12)May include surrounding context.

md
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/authorize.py (reported line 430)May include surrounding context.

python
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/authorize.py (reported line 1009)May include surrounding context.

python
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/mcp_client.py (reported line 1612)May include surrounding context.

python
The host follows this computer's network route, described below.

They share the one full-scope Device Token stored in
`~/.beatra/credentials.json`. Installing or switching packages must not trigger
another authorization when that credential is already valid. Do not add,
enable, trust, or configure a host Beatra Connector. Never print or move the
token into command arguments, environment variables, logs, chat, or another

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The authorization helper requests a very broad OAuth scope set, including artifacts, images, videos, music, speech, voice management, wallet spending, and task operations, while the skill's stated purpose is narrowly limited to turning insurance clauses and stills into talking clips. Excessive privileges violate least privilege and enlarge blast radius if the skill, host, or stored token is abused, enabling unrelated actions under the user's account.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

tasks:read and tasks:cancel permit visibility into and control over other asynchronous operations, which is not clearly justified by a single-purpose talking-clip workflow. These capabilities could interfere with unrelated user jobs if the token is reused or mishandled.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The file implements a broad MCP client with routing, registration, package updating, upload, and generic tool execution capabilities that go far beyond the stated insurance-clause video workflow. This materially enlarges the trust boundary: installing a narrowly described media skill effectively installs a general remote control and package-management client, increasing the chance of misuse, policy bypass, and unexpected data or code flows.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The client can fetch manifests and archives from remote endpoints and then rewrite or delete files in its own installation tree, including silent auto-update behavior. For a skill advertised as producing insurance-clause talking clips, self-modifying package logic is unjustified and dangerous because it creates a persistent remote code modification path outside the user's expected workflow.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The CLI exposes generic tool discovery and arbitrary tool invocation, allowing the installed skill to act as a wrapper for any remotely available MCP capability rather than a constrained insurance-clause workflow. In context, this mismatch is dangerous because users may grant trust based on a narrow media-generation description while the code enables broad remote actions.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
97% confidence
Finding

The exposed self-update command enables the skill to modify its own installed code, which is a self-modification capability inappropriate for a narrowly scoped insurance media tool. In combination with remote discovery and download logic elsewhere in the file, this creates a strong supply-chain risk and persistence mechanism if the update path is ever abused or the remote service is compromised.

Content

Scanner excerpt · scripts/mcp_client.py (reported line 2396)May include surrounding context.

python
)
    update = subparsers.add_parser(
        "update",
        help="Check, install, or configure Beatra package self-updates",
    )
    update.add_argument(
        "--check",

Credential Access

High
Category
Privilege Escalation
Confidence
88% confidence
Finding

The script explicitly enumerates credentials.json among removable shared state, showing awareness of and control over authentication material. While it does not exfiltrate the credential at this line, coupling a media-generation skill with direct handling of credential files is dangerous because compromise or misuse of the script could destroy or repurpose shared authentication state.

Content

Scanner excerpt · scripts/uninstall.py (reported line 39)May include surrounding context.

python
#: these and then removes the directory only if it is empty — the script
#: never recursively deletes a directory it does not fully understand.
_STATE_FILES = (
    "credentials.json",
    "installation.json",
    "host.json",
    "skills.json",

Credential Access

High
Category
Privilege Escalation
Confidence
97% confidence
Finding

The _device_token function reads an access token from ~/.beatra/credentials.json and later uses it to call the revocation endpoint. Reading bearer tokens from disk inside a skill package constitutes credential access; in a skill whose declared purpose is insurance clip creation, that access is unnecessary and increases the risk of token misuse, theft via code modification, or unexpected cross-skill denial of service.

Content

Scanner excerpt · scripts/uninstall.py (reported line 121)May include surrounding context.

python
def _device_token(state_dir: Path) -> str | None:
    path = state_dir / "credentials.json"
    try:
        value = json.loads(path.read_text(encoding="utf-8"))
    except (OSError, ValueError):

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The uninstall path can revoke a shared device authorization and delete shared local connection state for all skills when it decides this is the last installed skill. In the context of an insurance-video skill, this is an unjustified high-privilege capability that could disrupt unrelated skills or user access if triggered incorrectly or abused by a modified package.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill declares no explicit tool/permission scope even though its instructions require shell, network, filesystem, and environment access via a bundled client. That overbroad undeclared capability increases the attack surface and makes it harder for a host to sandbox or obtain informed consent before the skill reads local files, stores state, or contacts remote services.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The changelog states that in mainland China the helper connects through a specific mainland network and otherwise may use an international site, which is a locale-specific behavior described without explicit user opt-in. This can violate language/locale policy expectations because regional handling is forced in the natural-language manifest text rather than presented as a user-selectable option or clearly justified compliance requirement.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/installation-and-auth.md (reported line 106)May include surrounding context.

md
- say prominently that a signed-out browser lands on Beatra sign-in first:
  the user signs in or creates their account there, and the approval page
  continues automatically after sign-in;
- say once that the connection continues automatically after Allow — never
  ask the user to confirm in chat that they approved.
- on the mainland China network, follow the sign-in and console-link guidance
  in [MCP connection](mcp-connection.md#network-route).

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/installation-and-auth.md (reported line 132)May include surrounding context.

md
Use one of `website`, `github`, `skillhub`, `skillatlas`, `modelscope`,
`workbuddy`, `clawhub`, or `other`. If the conversation does not show it,
skip this and do not ask the user. If the command is not recognized, skip it.

## Use the bundled MCP client

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file documents a built-in installation registration call that transmits telemetry unrelated to the skill’s stated insurance video generation purpose. Even if described as non-billable and best-effort, collecting and sending installation, network-route, and runtime metadata expands data exposure and creates an undisclosed tracking surface that users may not reasonably expect from this skill.

Content

No source excerpt is available for this finding.