Fintech Customer Support
Analysis
The skill is coherent for fintech support, but it needs careful review because it can access and change sensitive money-transfer data, stores customer records, and sends customer messages to an external LLM despite a privacy claim saying otherwise.
Findings (8)
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.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
result = api_post(f"/transfers/{ref}/recall", {"reason": "customer_request"})The refund handler can make a POST request that attempts to recall a pending money transfer. The visible workflow does not require a separate human approval or explicit final customer confirmation before this high-impact action.
path = MEMORY_DIR / f"{customer_id}.json"
...
path.write_text(json.dumps(existing, indent=2))Customer IDs are used directly in local file paths for persistent memory without visible sanitization or path normalization, creating a path-traversal/unsafe-write risk if a crafted customer_id is accepted.
No data leaves your machine except via your own API and webhook
This privacy claim is materially misleading because the provided triage code sends customer messages to OpenAI's chat completions API when LLM_API_KEY is set.
Every Monday at 08:00 (local gateway time), run: `python3 handlers.py weekly_digest` Send the digest to the SUPPORT_EMAIL address via the gateway mail tool.
The skill includes a recurring scheduled operation that sends an operational digest. This is disclosed and support-related, but it is autonomous recurring behavior after installation.
uv | package: fintech-support-agent
Installation uses an external package name via uv, while the evaluation metadata lists the source as unknown. This is common for package installs but still a provenance item to verify.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
You have access to live transaction data, account status... Run `python3 handlers.py transfer_status --customer-id <id> --ref <ref>`... ask: "Could you share the transaction reference or the email address on your account? I'll pull it up immediately."
The skill is intended to access sensitive financial/customer account data, but the artifacts do not show a customer authentication or authorization check before using identifiers from a message or memory to retrieve account and transfer details.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
"https://api.openai.com/v1/chat/completions" ... {"role": "user", "content": message}The classifier sends the full customer message to an external LLM provider. In a fintech support context, those messages may contain personal, account, transfer, or complaint details.
After every interaction, write the following to customer memory: - Customer ID (if identified) - Issue type - Resolution or escalation outcome - Timestamp
Persistent customer memory is disclosed and purpose-aligned, but it stores support history for reuse across future conversations and contains fintech customer context.
