Monzo

Security checks across static analysis, malware telemetry, and agentic risk

Overview

This Monzo banking skill is mostly transparent and purpose-aligned, but it gives an agent persistent bank access and can change account state without a built-in confirmation gate in the provided scripts.

Before installing, decide whether you want an agent to have ongoing Monzo API access. Use read-only commands by default, require manual confirmation for any pot movement, receipt deletion, transaction annotation, or webhook change, keep the encryption password out of shared files, and revoke the Monzo OAuth connection if you no longer need it.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI02: Tool Misuse and Exploitation
High
What this means

If the agent misunderstands a request or is prompted into using the mutation commands, it could change where your money is held in Monzo and affect your available balance.

Why it was flagged

The provided script can move money between a Monzo account and pots after parsing command arguments; no explicit confirmation prompt or amount cap is shown in this script before the API mutation.

Skill content
response=$(monzo_api_call PUT "/pots/$POT_ID/deposit" ... -d "amount=$AMOUNT" ...)
response=$(monzo_api_call PUT "/pots/$POT_ID/withdraw" ... -d "amount=$AMOUNT" ...)
Recommendation

Require explicit user confirmation for every pot deposit/withdrawal and other account-changing operation, including the exact account, pot, amount, and direction before execution.

#
ASI03: Identity and Privilege Abuse
Medium
What this means

Someone who gains access to the encrypted file and password, or to your running user environment, may be able to access your Monzo account through the API.

Why it was flagged

The skill persists delegated Monzo credentials, including refresh tokens, which is expected for this integration but gives ongoing account access if the local environment or encryption password is compromised.

Skill content
The following are stored in the encrypted credentials file:
- OAuth Client ID and Client Secret
- Access Token and Refresh Token
- Default Account ID
Recommendation

Use a strong unique MONZO_KEYRING_PASSWORD, restrict file permissions, avoid shared machines, and revoke the OAuth client in Monzo if you stop using the skill or suspect compromise.

#
ASI07: Insecure Inter-Agent Communication
Medium
What this means

A webhook pointed at the wrong endpoint could expose future transaction notifications outside your control.

Why it was flagged

The skill can register persistent transaction webhooks to an external URL. The README warns about attacker-controlled endpoints, and the script requires HTTPS, so this is disclosed but still sensitive.

Skill content
scripts/webhooks.sh create https://your-server.com/webhook

> Webhook safety: Only point webhooks at endpoints you control. An attacker-controlled webhook would receive your transaction notifications.
Recommendation

Only create webhooks to servers you own, review existing webhooks regularly, and delete any webhook you do not recognize.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

You have less external information to verify who maintains the banking integration or how updates are reviewed.

Why it was flagged

For a skill that handles banking credentials and account actions, the lack of a public source or homepage makes publisher provenance harder for users to verify, even though the included artifacts do not show hidden install behavior.

Skill content
Source: unknown
Homepage: none
Recommendation

Install only if you trust the publisher and have reviewed the included scripts; prefer a version with a verifiable repository or maintainer identity.