Revolut Business

AdvisoryAudited by Static analysis on Apr 30, 2026.

Overview

No suspicious patterns detected.

Findings (0)

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.

What this means

Installing and authenticating this skill can give the agent ongoing access to business account data and authorized Revolut API actions.

Why it was flagged

The skill needs persistent credentials and OAuth tokens for a business banking account, while the registry metadata says there is no primary credential or required env var. That under-declares the privilege boundary a user is granting.

Skill content
Stored in `~/.clawdbot/revolut/`:
- `private.pem` — RSA private key (for JWT signing)
- `tokens.json` — OAuth tokens (auto-managed)
...
Environment variables (in `.env`):
- `REVOLUT_CLIENT_ID`
Recommendation

Declare the required credentials/env vars in metadata, document the exact API scopes/permissions requested, and advise users to use the least-privileged Revolut certificate and protect the token directory.

What this means

If invoked incorrectly or too broadly, the agent could initiate payments, exchange funds, or transfer money between business accounts.

Why it was flagged

The skill exposes money-moving and currency-exchange operations, including a documented no-confirm payment path, without clear artifact-level rules requiring explicit user approval for every high-impact transaction.

Skill content
# Send payment (with confirmation prompt)
python3 {baseDir}/scripts/revolut.py pay ...

# Skip confirmation
python3 {baseDir}/scripts/revolut.py pay ... -y
...
python3 {baseDir}/scripts/revolut.py exchange --amount 100 --sell EUR --buy USD
...
python3 {baseDir}/scripts/revolut.py transfer --from-account <ID> --to-account <ID> --amount 100
Recommendation

Require explicit per-transaction user approval, discourage or disable `--yes` for agent use, and document confirmation behavior for FX and internal transfers.

What this means

During setup, a crafted or copied value could run arbitrary shell commands on the user's machine.

Why it was flagged

Interactive values such as certificate common name, organization, and country are interpolated into a shell command executed with shell=True. Shell metacharacters in those fields could execute unintended local commands.

Skill content
def run(cmd):
    return subprocess.run(cmd, shell=True, capture_output=True, text=True)
...
r = run(f'openssl req -new -x509 -key "{PRIVATE_KEY}" -out "{CERTIFICATE}" '
        f'-days 730 -subj "/CN={cn}/O={org}/C={country}"')
Recommendation

Use subprocess.run with an argument list and shell=False, validate certificate fields, and avoid placing user input inside shell command strings.