T09 · Insecure Skill Coding Practices
- Location
SKILL.md:89- Finding
Transaction verification can miss dangerous token approvals
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is not malicious, but it should be reviewed because it is a financial transaction safety gate with an under-specified approval check that could miss dangerous permissions.
Review this skill before relying on it for real transactions. It is suitable as a disclosed Tenderly simulation helper, but users should require stronger approval and authorization-state checks before treating a transaction as safe, especially for token approvals, Permit/Permit2, NFT operator approvals, multicalls, and proxy-mediated calls.
SKILL.md:89Transaction verification can miss dangerous token approvals
Skipping verification on unsupported chains creates a fail-open path in a skill whose stated purpose is to act as a pre-execution safety gate. Even with a warning and confirmation requirement, callers or users may normalize bypassing the check, allowing malicious or malformed calldata on unsupported networks to avoid the intended simulation-based review.
| Arbitrum One | `42161` | `https://arbitrum.gateway.tenderly.co` |
| Polygon | `137` | `https://polygon.gateway.tenderly.co` |
If the `chainId` is not in this list, skip verification, warn the user that the chain is unsupported, and require explicit confirmation before proceeding.
> Add new entries as additional chains become supported.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
TENDERLY_URL="https://base.gateway.tenderly.co"
curl -sS -X POST "$TENDERLY_URL" \
-H "Content-Type: application/json" \
-H "X-Access-Key: $TENDERLY_NODE_ACCESS_KEY" \
-d '{
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.
| `TENDERLY_NODE_ACCESS_KEY` not set | Warn that verification is unavailable; require explicit user confirmation before proceeding |
| `chainId` not in supported list | Warn that chain is unsupported for verification; require explicit user confirmation |
| Tenderly returns an error | Surface the error message; treat as verification failure and require confirmation |
| Rate limit hit (HTTP 429) | Warn the user; do not retry automatically; require confirmation to proceed without verification |
| Verification passes all checks | Return control to the calling skill to proceed with execution |
| Verification fails a check | Halt; surface the specific discrepancy; do not execute |