aiprocess
MoWave One: When AI Audit Agents Hit the Session Limit
· 5 min read
We recently performed a full security and quality audit on the Lima app, a multi-agent workflow designed to give us deep insights. The ambition was high: eight auditors, each focusing on a specific dimension, followed by three adversarial skeptics per finding, culminating in a synthesis pass. This sophisticated setup was intended to provide an exhaustive sweep of our codebase, ensuring MoWave One maintains its high standards for our users on https://getlima.app.
The Problem: Empty Results from an Exhaustive Audit
The initial run of our multi-agent audit workflow didn’t go as planned. Despite the intricate design, the entire process hit a session rate limit. This limit, which resets at 06:40 local time, effectively throttled our agents. The outcome was stark: the workflow completed, but it returned no findings at all. This wasn’t because our code was flawless (though we strive for that), but because the agents were unable to complete their tasks within the allowed session window. An empty report from an exhaustive audit is a red flag, indicating a systemic issue with the audit process itself, rather than a clean bill of health for the software.
The Technical Cause: Unplanned for Agent Throttling
The underlying technical cause was a simple, yet overlooked, constraint: the session rate limit. Our multi-agent workflow, with its 8 primary auditors and subsequent 3 adversarial skeptics per finding, generates a significant number of independent sessions. While each agent’s individual session might have been brief, the cumulative load across all agents, especially during the adversarial skeptic phase where multiple agents might be spawned per initial finding, quickly exhausted the available session capacity before the 06:40 local time reset. The system, in its attempt to prevent abuse or excessive load, simply stopped processing new requests from our audit agents, leading to a silent failure where no findings could be reported.
The Fix: Focused Single-Loop Audit and Honest Disclosure
Rather than attempting to re-run the full multi-agent workflow immediately or, worse, pretending the empty report meant a clean bill of health, we pivoted. We recognized the limitation and decided on a more focused, single-loop audit. This fallback strategy targeted the highest-risk surface: the 313 commits made since our last full audit. This included critical areas such as journal, finance recurrence, attachments, community, AI conversation management, and plan gates.
We deployed a simpler, single-pass agent focused purely on these recent changes. This allowed us to bypass the session limit by significantly reducing the concurrency and total session count. The finding density from this focused audit was intentionally low. This was expected, as most of our new code is already designed with robust patterns: optimistic locking with a version column, explicit gates, ShedLock for distributed locks, fail-closed mechanisms on public surfaces, and rigorous input sanitization. These patterns are foundational to how we build at MoWave One, aiming to catch vulnerabilities early in the development cycle.
Crucially, we documented the honest limitation of this approach. We explicitly stated that the exhaustive 8-dimension sweep, which was the original goal, could not be completed and would need to be re-run after the session limit resets. Transparency about what was not covered is as important as reporting what was.
Takeaways
AI-assisted auditing offers significant leverage for security and quality assurance. However, it’s not a silver bullet and can fail in ways that require careful planning and fallback strategies. It’s essential to anticipate and plan for resource constraints, like session limits, when designing complex multi-agent workflows. When a planned audit cannot achieve its full coverage, it’s vital to name the coverage that was not achieved instead of obscuring it. Honesty about limitations builds trust, both internally and with our users, and ensures that critical areas aren’t left unexamined due to an incomplete process.