> For the complete documentation index, see [llms.txt](https://docs.atoma.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.atoma.fi/security/agentic-audit.md).

# Audit

The vault contract was scanned by Nethermind AuditAgent, an AI-driven code analysis tool. The scan is automated and was not manually reviewed by Nethermind's security team, so it is not a full security audit.

|          |                                      |
| -------- | ------------------------------------ |
| Tool     | Nethermind AuditAgent                |
| Date     | September 16, 2026                   |
| Scope    | `AtomaVault.sol`                     |
| Findings | 12: 4 medium, 7 low, 1 informational |

{% file src="/files/zCypaKjecI1SBQZRaAJT" %}
Nethermind AuditAgent report, September 16, 2026
{% endfile %}

## Findings

| #  | Finding                                                                                          | Severity | Status                                                                                                                        |
| -- | ------------------------------------------------------------------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
| 1  | Minimum shortfall index can disable future haircuts and undercollateralize recovered claims      | Medium   | Fixed. The index resets once all settled withdrawals are claimed.                                                             |
| 2  | `capitalWithdraw` reserve check relies on an accounting liability that a NAV report can shrink   | Medium   | False positive. USDC can only go to pre-approved addresses after a 24-hour delay, and NAV updates are bounded.                |
| 3  | NAV update bound is computed on gross managed assets, so NAV per share can move beyond the limit | Medium   | Fixed. The bound is now computed on equity, excluding settled withdrawals.                                                    |
| 4  | Deposits can front-run a pending positive NAV update                                             | Medium   | False positive. NAV is published hourly within bounds, and new shares cannot be withdrawn until the epoch ends.               |
| 5  | `setEpochDuration` can lengthen the epoch in which queued withdrawals settle                     | Low      | False positive. Epoch length is an owner parameter and every change is an on-chain event.                                     |
| 6  | Deposits at a stale NAV can capture profit accrued before the deposit                            | Low      | False positive. Same as finding 4.                                                                                            |
| 7  | A blocklisted operator address makes withdrawal claims revert                                    | Low      | Fixed. Withdrawal fees now accrue in the contract and are collected separately, so claims no longer transfer to the operator. |
| 8  | `maxMint` advertises shares that `mint` rejects below the minimum deposit                        | Low      | Fixed.                                                                                                                        |
| 9  | `maxDeposit` overstates capacity below the minimum deposit                                       | Low      | Fixed. `maxDeposit` returns zero when the remaining room is below 100 USDC.                                                   |
| 10 | `maxDeposit` advertises capacity that cannot be used below the minimum deposit                   | Low      | Fixed. Same fix as finding 9.                                                                                                 |
| 11 | Settled withdrawals keep consuming deposit capacity until claimed                                | Low      | False positive. Settled but unclaimed withdrawals remain vault liabilities until claimed.                                     |
| 12 | Withdrawal requests are irrevocable and settlement is operator-gated                             | Info     | False positive. Irrevocable requests are by design, so each epoch can be settled against a fixed set of requests.             |
