"I'll just check the logs."
Every developer has said it. Usually right after something that was supposed to work didn't.
There's nothing wrong with checking logs. They're essential when something goes wrong. But if searching through logs is the only way to find out whether an event was delivered, you've got a problem.
And it's a problem worth fixing before handing the workflow over to an autonomous agent.
Reliability before autonomy
Gartner recently published an article called AI Agent Success Requires Reliability Before Autonomy. They make a broader argument about reliability, accountability and the need to recover from failures before agents are given more autonomy.
One part of that discussion deserves a closer look: the code these agents depend on.
An agent might be perfectly capable of deciding what to do next. It still needs APIs, integrations and other services to carry out those decisions. And a lot of that code was written long before anyone considered letting an agent run the process without human supervision.
Some applications handle failures extremely well. Others have a few retries, some error logging and a developer who knows where to look when something stops working.
But when was the last time you actually checked how your delivery code handles failures?
When checking the logs becomes part of the workflow
Consider a fairly ordinary workflow.
An agent processes an order, updates an ERP system and sends a request to a shipping provider. The receiving API returns HTTP 503.
The application retries three times and gives up.
What happens to the shipment?
Is the request stored for another attempt? Does someone get notified? Or does the failure simply end up in a log, waiting for someone to discover that the shipment was never created?
Now consider another scenario. The shipping provider processes the request successfully, but the acknowledgment never reaches the sender.
The application retries, potentially creating a duplicate shipment.
Neither scenario is unusual. We've dealt with these problems in distributed systems for years.
The real problem starts if the agent assumes the shipment was created and continues making decisions based on that assumption. The original failure might have been a single API request. Now you've got a workflow operating on information that may be wrong.
Giving the agent access to the logs doesn't necessarily solve this. It needs reliable information about which requests were acknowledged, which are pending and which have failed. It also needs to know when retrying is safe.
You should know which events were delivered, which are waiting and which need attention. And when something fails, you should have a way to recover it.
If the first indication of a failed delivery is a customer complaint, you have a bigger problem than missing log entries.
Now think about your own application.
Do you know what happens when an external API stops responding for 30 minutes? Not what you intended when you wrote the code, but what you've actually verified?
Your retry logic deserves a closer look
A 429 needs different handling from a 401. A timeout doesn't necessarily mean the operation failed. Retrying without proper idempotency can create duplicates, while retrying too aggressively can make an overloaded service even less available.
Then there's recovery.
If a delivery failed yesterday, can you find it today? Can you replay it safely? Can you see which events are still waiting, without digging through thousands of log entries?
These aren't new problems. Durable queues, idempotency, backoff, dead-letter queues and delivery tracking have been around for years.
But how much of this have you actually implemented? And how much is handled by a few lines of retry logic that nobody has reviewed in a while?
Your agent can review your code. Give it the right job.
Your agent can already read your code. The question is whether you're asking it the right questions.
Queuey's free Delivery Health Check gives it a specific job: inspect your delivery logic for potential weaknesses in retries, idempotency, failure handling and recovery.
Not another general code review. A focused look at the code responsible for getting events from one system to another.
Your delivery code has probably been through plenty of code reviews. But how many of those reviews specifically looked at what happens when delivery fails?
Find out where your delivery logic looks solid, where failures may be handled incorrectly and which scenarios deserve further testing. Then decide what needs attention before the next incident.
The check won't prove how your system behaves under every failure condition, but it can identify potential weaknesses before they become production incidents.
Think your delivery code is ready?
Good. Let's find out.
Run Queuey's free Delivery Health Check and let your agent examine the code responsible for delivering events between your systems.
Run the Free Delivery Health Check
Better to find out now than during the next incident.
"I'll just check the logs."