iktok90-design/ai-smart-contract-auditor/approval-issues
Claude Code and agent skill by iktok90-design/ai-smart-contract-auditor
- community
Checking that the SKILL.md file is still in the repository.
Detect ERC-20 approval pitfalls — approve race (front-run), missing safeApprove, infinite approvals, approval-without-revoke, Permit2 misuse, max-approval to untrusted contracts. Activate on `approve`, `safeApprove`, `permit`, `forceApprove`, `Permit2`, `IERC20.allowance`.
Install
npx vskill@latest install iktok90-design/ai-smart-contract-auditor/approval-issuesSKILL.md
Approval issues detection
When this applies
- Any
approve/safeApprove/forceApprovesite permit(EIP-2612, DAI-style, Permit2)- Routers / aggregators that hold persistent approvals
- Vaults that approve strategies to pull funds
- Bridges / cross-chain approvers
Detection patterns
The classic ERC-20 approve race (HIGH)
Use forceApprove(spender, Y) (OZ ≥4.9), or decreaseAllowance / increaseAllowance, or zero-first.
approve instead of safeApprove on non-standard tokens (HIGH)
USDT requires approve-to-zero before approve-to-X. Use OZ forceApprove.
Infinite approval to mutable contract (HIGH)
Mitigate with allowance-per-action.
Per-pull infinite approval (HIGH)
Vault → strategy infinite approval; if strategy is upgradeable or has a bug, vault funds drainable.
Permit2 sig stolen / replayed (HIGH)
Permit2 signatures are bearer instruments — anyone with the sig can transfer. If the signed payload is logged or leaked, funds are drainable until the nonce is invalidated. Add a deadline.
permit then ignore failure (MEDIUM)
Caller can grief by front-running permit. Acceptable IFF you then check the allowance is sufficient.
Approval to address(0) on revoke (LOW)
Some tokens treat approve(0, x) as a no-op or revert. Use the documented revoke method.
Allowance still set after action completes (HIGH for routers)
Set to 0 after each action, or use a single-tx wrapper.
Approve to factory / clone-deployer (HIGH)
Deployer can deploy attacker-controlled implementation that consumes the approval.
Severity rubric
| Pattern | Severity | |
|---|---|---|
| Persistent infinite approval to upgradeable router | High | |
Approve race ignored, no forceApprove / increaseAllowance | High | |
| USDT-style approve without zero-reset | High | |
| Vault → strategy infinite allowance with mutable strategy | High | |
| Permit2 with no deadline | High | |
| Permit failure swallowed, allowance not re-checked | Medium | |
| Lingering allowance after one-shot router action | High |
Remediation patterns
- Always use OZ
forceApprovefor setting;safeIncreaseAllowancefor top-ups. - After a router/exec call:
safeApprove(target, 0)to reset. - For vault→strategy: pull-only allowances and per-cycle resets.
- Permit2: short deadlines (minutes), per-payload nonce, bind to specific recipient + amount.
- For EOA users: surface the actual amount in the UI; never auto-approve max from the contract.
False-positive notes
- Internal-only approve where source and spender are both controlled → Info.
- WETH9-style
approvereturning bool always-true is well-known and safe.
Related
- [[token-compatibility]]
- [[signature-replay]] — Permit2 / EIP-2612
- [[mev-frontrunning]] — approve race is an MEV pattern
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/approval-issues/SKILL.md
Popularity
- Repository stars
- 37
- Repository forks
- 5
- 7-day trend score
- 18
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/iktok90-design/ai-smart-contract-auditor/approval-issues)