Sharper Audit Trails and Fewer Failed Tool Calls
June 30, 2026 · InfraScout Team
This release groups two kinds of improvement. The first sharpens your audit trails, so you can see exactly which tool ran and what each conversation cost. The second makes assessments more reliable by removing whole classes of avoidable tool-call failures that used to waste turns. Neither changes how you work — the same views and tools behave a little more precisely.
Every execution names the exact tool that ran
Until now, the executions trail told you the broad category of a Microsoft Cloud call but not which tool actually ran. Every cloud call collapsed into one of a few type labels, so a sign-in review and a Conditional Access check could look identical in the list even though they reached for entirely different tools — and there are around 150 cloud tools to tell apart.
The Command column is now Tool / Command. The specific tool — mscloud_security_list_sign_ins, for example — is the primary line, with the request summary directly beneath it. You get this everywhere the executions list appears: your own My Executions view, the admin Audit and Compliance executions trail, and the per-session execution list. Agent commands record their tool too, so a shell, PowerShell, WMI, LDAP, or event-log call is now just as identifiable as a cloud one. Executions recorded before this change keep their command summary as they were.
Per-conversation cost in the Chat Audit
The admin Chat Audit table gains a Cost column, giving you each conversation's lifetime estimated spend at a glance. Because a single chat turn is a fraction of a cent, the figure carries sub-cent precision for typical conversations and rounds to whole cents once spend crosses a dollar. Conversations that predate cost tracking have nothing to show and display a dash.
This sits alongside the range-total estimate already at the top of the view, and the two answer different questions. The total tells you what the filtered date range cost across all conversations; the new column tells you what a single conversation has cost over its whole life. Because the per-row figure is lifetime, a conversation that started before your date filter but appears because of recent activity shows its full cost, not just the in-range portion.
Arguments the model gets right the first time
Alongside the visibility work, we looked at real failed tool calls to find the failures that were avoidable — cases where a tool could have succeeded if it had been a little more forgiving about its input or a little smarter about waiting. Removing those failure classes means an assessment spends its turns making progress instead of retrying calls that never had to fail.
Models occasionally format an argument in a reasonable-but-not-quite-valid way, and a strict rejection turns that into a wasted turn. Several of these are now handled gracefully. When a list argument arrives as a single comma-separated string instead of a proper list, the tool accepts it rather than rejecting the whole call. Cloud directory search terms are normalized instead of turned away: stray quotes are stripped, and a bare term with no field prefix defaults to a display-name search. And a number of parameter descriptions were sharpened so the model is more likely to pick a valid value the first time — the cheapest fix of all, because the call simply succeeds.
Audit log checks that wait instead of spin
A Unified Audit Log search runs asynchronously on Microsoft's side and often takes minutes to finish. The tool that checks a search's status used to return instantly, so an AI client told to check every 20–30 seconds had no way to pace itself and instead re-checked every couple of seconds — dozens of times — until someone gave up and cancelled. That looked like a stuck assessment, when really the search was simply still running.
The status check now waits on the server for a short while and returns the moment the search reaches a final state, so a quick search comes back as soon as it is done. When the search is still running after that wait, the tool returns a clear signal telling the AI client to stop polling and report back to you rather than loop. Either way, the rapid-fire checking that used to burn turns is gone.
Self-healing agents and sessions
Two smaller reliability fixes round out the release. An agent that briefly goes quiet while it is still connected now restores its own reachable-for-commands state on its next heartbeat, so it stays available to run commands instead of being stranded as unreachable. And sessions left idle in a running state are now cleaned up automatically, so a long-abandoned session no longer shows up as live occupancy when someone starts fresh work on the same agent.
Questions or feedback? Reach us at info@infrascout.cloud.