Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Find the exact run step that stopped making progress before changing the prompt or adding retries. An agent run is a loop of model generations, tool executions, and sometimes agent handoffs; a plausible-looking final response does not show which step failed. A trace with per-span status, arguments, results, duration, and errors lets you separate a slow model attempt from a stuck tool, invalid request, expired credential, rate limit, or network failure.
This guide uses the tracing and error semantics documented for OpenAI agent implementations. Apply the method to other providers, but verify their current endpoint fields, status codes, timeout behavior, idempotency rules, and retry guidance in their own documentation.
Start by locating the exact stalled step
Do not diagnose an agent from its final text alone. The runner may generate several model messages, invoke multiple tools, hand work to another agent, and then continue the loop until it reaches a stopping condition. “The agent hung” is therefore a symptom, not a fault location.
Free tools Windows power users keep installed
One-click scans. No signup required.
Think in spans, not one request
Model generation, function-tool execution, and an agent handoff are different operations with different failure modes. A model can finish successfully while the HTTP call made by a tool is still waiting. A tool can return an error that the model fails to interpret, causing another generation and another tool call. A handoff can select a new agent whose own tool remains active. Your first question is: which span was the last one to complete, and which span was the first one to become slow, failed, or permanently active?
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.
Record enough context to reproduce the run
- A unique run or correlation identifier.
- The start time, end time, and timezone.
- Agent framework and version, model identifier, and relevant configuration.
- Target API, endpoint, API version, and resource or model identifier.
- Whether the request used streaming, polling, webhooks, or a synchronous response.
- Configured model, tool, and overall-run deadlines, plus retry settings.
- The last visible event and the point at which progress stopped.
Keep this metadata with the trace. Without it, two apparently identical failures can actually be different API versions, credentials, environments, or timeout paths.
Build a trace that answers “where is it stuck?”
A useful trace records the causal chain rather than only the final answer. For every model generation and tool span, capture:
| Field | What it tells you |
|---|---|
| Start time and duration | Whether the operation is genuinely slow and how long it waited. |
| Status | Running, completed, failed, cancelled, or another framework-defined state. |
| Model input and output | Whether the model emitted a tool call, interpreted a tool result, or stopped early. |
| Tool name and arguments | Exactly what the model asked the wrapper to execute. |
| Tool result | Whether the wrapper returned data, an explicit failure, or nothing at all. |
| HTTP status, response body, and elapsed time | Which API layer rejected or delayed the request. |
| Error type and message | Validation, authentication, authorization, resource, rate, network, timeout, or server diagnosis. |
| Request or correlation ID | A handle for matching your event to provider logs when the provider supplies one. |
OpenAI’s Agents tracing model organizes a session into turns and spans. Spans expose duration, status, and recorded data for generations and tools when available. A session trace can be exported as OTLP JSON for inspection in another system. Exporting does not make sensitive data safe by itself: redact API keys, authorization headers, personal data, customer payloads, and secrets before storage or transmission.
Make missing results visible
Represent a tool failure as a failure. A wrapper that returns an empty string, a null value, or a success-shaped object for every outcome deprives the model and the operator of the distinction between “no records” and “the request failed.” Include a stable error category, human-readable message, and retryability flag in the tool result. If the wrapper raises an exception instead, ensure the runner records that exception in the span and applies its documented tool-error behavior.
Inspect the tool boundary before editing prompts
Once the trace identifies a suspect span, compare what the model emitted with what the wrapper actually sent. Work through this sequence:
- Read the model’s tool call. Note the exact tool name, argument names, data types, enum values, and omitted fields.
- Log the wrapper request after validation. Record the HTTP method, endpoint, API-version parameter, relevant non-secret headers, body shape, and serialized size. Sanitize credentials and customer content.
- Record the complete response event. Save status, response headers that affect retries, response body, elapsed time, and provider request or correlation ID when present.
- Compare the two shapes. A model may supply
user_idwhile the endpoint expectsuserId, or pass a display name where an immutable identifier is required. Confirm that the wrapper did not silently coerce, drop, or rename a field. - Verify result propagation. Check that the wrapper returned the API result to the runner and that the next model input contains that result. A successful HTTP request is still an agent failure if its output never reaches the model.
- Replay safely outside the agent. Send the same sanitized request with a command-line client or API testing client. This separates an API contract problem from orchestration behavior.
Do not copy production secrets into a replay command. Use a restricted credential, a non-destructive resource, and a redacted payload whenever possible.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Classify the failure before changing code
Use the error source and response details to choose a remedy. The same symptom—no final answer—can require opposite actions.
| Diagnosis | Evidence to inspect | Correct response |
|---|---|---|
| Invalid request or schema | 4xx response, parameter pointer, validation message, malformed encoding, or payload-size error. | Correct fields, types, required values, format, encoding, or size. Do not retry the unchanged request. |
| Authentication or authorization | Missing, expired, inactive, or insufficient credential; project or resource permission error. | Fix credential scope or access. Do not replay unchanged credentials. |
| Not found or incompatible resource | Unknown endpoint, model/resource ID, API version, or resource unavailable in this environment. | Verify the identifier, endpoint, version, region, and environment access. |
| Rate limit | 429 response, quota detail, limit headers, or Retry-After. |
Wait the provider-specified interval, then use bounded backoff and jitter. Account for retries already performed by the SDK. |
| Timeout or connection failure | Which client reported the timeout: model client, tool HTTP client, proxy, runner, or provider; socket and DNS errors. | Set the bound at the layer that waited, then inspect network and proxy paths. A client-side error absent from provider health data may mean the request never arrived. |
| Server or environment failure | 5xx response, provider incident, unreachable executor, missing package, blocked egress, or broken local setup. | Check provider status and execution environment before replaying work; retry only when the failure is plausibly transient. |
Invalid request and schema errors
Read the provider’s parameter pointer and message literally. Check required fields, exact spelling and case, primitive types, date and enum formats, content encoding, nesting, and maximum payload size against the target endpoint reference. A model can produce syntactically valid JSON that still violates the endpoint’s contract. Fix the schema or wrapper, then replay one corrected request independently before returning control to the agent.
Authentication, authorization, and resource errors
Confirm that the credential present in the actual process is the intended one, is active, and is authorized for the project and resource. Check environment-variable loading, secret rotation, tenant or region selection, and API version. A “not found” response can also mean the resource is intentionally hidden from an unauthorized identity. Retrying without changing identity or target cannot resolve either condition.
Rate limits
Inspect the 429 body and Retry-After value. Honor a valid provider delay; when none is supplied, use bounded exponential backoff with jitter and an overall deadline. Include retries made by your SDK in the attempt budget—otherwise the outer agent may believe it has made one attempt while the client has already made several. Repeated unsuccessful requests can consume per-minute limits and make the stall worse.
Timeouts and connection failures
Identify who stopped waiting. A model client may report a timeout while the tool’s HTTP request is still running; a reverse proxy may close a connection before the provider sees it; a local DNS or TLS error may prevent any request from leaving the process. Compare client timestamps, proxy logs, and provider telemetry. OpenAI’s troubleshooting guidance notes that when client errors do not appear in Service Health data, “Requests likely did not reach OpenAI.” Treat that as a reason to inspect the client, network, proxy, and timeout path—not as evidence that the provider completed the operation.
Server and environment failures
Check provider status, execution-network access, package versions, certificates, and executor connectivity. Capture the first error rather than only the final cascade; a missing dependency can cause every later tool call to appear hung. Once the environment is healthy, replay a read-only request and compare its trace with the original.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Put a separate bound around every layer
Timeouts answer different questions. Configure all of the following instead of relying on one global value:
| Layer | What its timeout bounds | What it does not bound |
|---|---|---|
| Model-call attempt | One request from the runner to the model. | Tool execution, later model attempts, retry backoff, or the complete agent run. |
| Function or tool call | The external API request and its local wrapper. | Model generation before or after the tool. |
| Proxy or HTTP client | Connection, read, or total socket wait, depending on the client. | Work performed after the client gives up. |
| Agent run | Total wall-clock budget for all turns, tools, handoffs, and waits. | Whether an individual operation is safe to replay. |
| Loop or turn cap | Maximum iterations when the agent keeps calling tools without reaching a stop condition. | A single slow request that consumes the entire iteration allowance. |
In the OpenAI Agents SDK, ModelSettings.timeout applies to one model-call attempt. It does not cap the full run, function-tool execution, or retry backoff. A function tool can have its own timeout and can be configured to return an error to the model or raise an exception. Set a run deadline and a maximum turn or loop count in the orchestration layer as well, so a sequence of individually successful calls cannot run indefinitely.
Use deadlines, not only per-request limits
Propagate one absolute deadline through the run. Before starting a model or tool call, compute the remaining time; refuse or cancel work when the remainder is too small to complete safely. This prevents nested retries from extending a nominal five-minute run into an unbounded wait.
Retry only failures that can plausibly clear
A retry is appropriate when the request is valid, the credential is valid, the operation is safe to replay, and the failure could disappear without changing the request. Make retries explicit and finite:
- Honor
Retry-Afterwhen supplied. - Otherwise use exponential backoff with jitter, a maximum delay, and an overall deadline.
- Count attempts made by the SDK, HTTP client, wrapper, and orchestration layer together.
- Stop when the error signature changes, the result is ambiguous, or the retry budget expires.
- Never use retries to “fix” validation, permission, or a missing resource.
Consider side effects before replaying. A disconnected response does not prove that a create, charge, delete, or update failed; the server may have committed it before the connection broke. Query by an idempotency key or operation identifier, or inspect the resource, before submitting again. If the API supports idempotency keys, generate and persist one per logical operation rather than per network attempt.
deadline = run_deadline
for attempt in range(max_attempts):
remaining = deadline - now()
if remaining <= 0:
return timeout_error("run deadline exceeded")
result = call_api(timeout=remaining)
if result.success:
return result
if not result.retryable or result.ambiguous_side_effect:
return result
delay = result.retry_after or backoff_with_jitter(attempt)
if now() + delay >= deadline:
return timeout_error("retry budget exhausted")
sleep(delay)
return retry_error("attempt cap reached")
The pseudocode illustrates the policy; use the target provider’s status and idempotency definitions rather than assuming that every 5xx, disconnect, or 429 has the same semantics.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Verify the API independently of the agent
A direct request test is the fastest way to isolate layers. Reproduce the method, URL, API version, headers, and body with a sanitized command-line client or API testing client. Use a known-safe resource and record the same timing, status, body, and request ID fields as the agent trace.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →- Validate DNS, TLS, proxy, and egress from the same runtime environment as the agent.
- Send a minimal read-only request with the exact credential and endpoint.
- Send the failing payload with secrets and customer data removed, if the API permits a test resource.
- Compare the direct response with the wrapper response byte-for-byte where practical, then compare semantic fields.
- Run the wrapper with a fixed, known-good response to determine whether the model can consume and act on tool output.
If the direct request fails identically, fix the API contract, credential, resource, network, or provider issue first. If it succeeds while the agent fails, focus on serialization, argument mapping, result propagation, cancellation, and orchestration state.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Handle incomplete results and streaming carefully
Streaming adds intermediate states that a non-streaming trace may hide. Record stream start, each chunk or event type, the last chunk received, stream termination reason, and whether the tool call was fully assembled before execution. A connection that stops after partial arguments must not be treated as a complete tool request. Validate assembled arguments before dispatching them, and mark an interrupted stream distinctly from an empty successful response.
When a turn appears complete, inspect its tool results anyway. OpenAI’s Agents error guidance states: “Inspect tool results even when a turn completes.” A completed turn can contain an error-shaped result, an empty result caused by a wrapper bug, or a response that the model misunderstood. Completion is a runner state, not proof that the requested business operation succeeded.
Use provider health data as one signal, not the whole diagnosis
Check the target provider’s service-health page for the relevant product, region, and time window. A clean status page does not clear your client: requests can fail in DNS, a corporate proxy, a firewall, a local executor, or an SDK before reaching the provider. Conversely, a provider incident can explain elevated latency without explaining a malformed request. Match health events to your trace timestamps and request IDs, and preserve the distinction between “provider returned an error” and “no response was received.”
Recommended Free Tools
Compare debugging setups on operationally useful axes
If you are choosing between a console log, framework tracing, and an exported observability pipeline, compare capabilities rather than brand names:
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
| Axis | Questions to answer |
|---|---|
| Span coverage | Does it capture model generations, tool calls, handoffs, retries, and cancellations? |
| Recorded data | Are arguments, results, status, duration, response IDs, and error details available? |
| Timeline visibility | Can you identify the last completed span and the first slow or active span? |
| Export and interoperability | Can sessions be exported as OTLP JSON or another documented format for independent inspection? |
| Privacy and retention | Can secrets and customer payloads be redacted, access-controlled, and expired? |
| Framework and provider coverage | Does instrumentation follow your runner and target API, or only one SDK? |
| Operational overhead | What latency, storage, deployment, and maintenance cost does the tracing path add? |
The official OpenAI documentation describes tracing and export for its agent tooling but does not establish a neutral feature ranking of third-party products. Select a setup that preserves the fields needed for your failure classes and meets your organization’s privacy requirements.
Prevent stalls when introducing an unfamiliar API
Start with a narrow contract
Wrap the new endpoint in a small function with explicit input and output schemas. Reject unknown or missing fields before making the network call, and return structured success and failure objects. This keeps model-generated arguments from becoming an unvalidated wire request.
Expose progress to the runner
Emit a span when a tool starts, when the HTTP request starts, when a response arrives, and when the result is handed back to the model. Include elapsed time at each boundary. A heartbeat or cancellation check is useful for long polling, but it must not disguise an expired provider request as progress.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Test failure paths deliberately
Exercise invalid input, expired credentials, forbidden resources, missing resources, 429 responses with and without Retry-After, connection resets, slow responses, malformed provider bodies, and duplicate submissions. Confirm that each case produces the intended status, trace entry, model-visible result, and retry decision.
Keep budgets visible
Display remaining run time, attempt count, and turn count in diagnostic logs. When a budget expires, return a specific reason such as “tool deadline exceeded” or “run attempt cap reached,” not a generic “agent failed.” Precise terminal states make the next investigation shorter.
Quick Recap
A compact incident runbook
- Freeze the run ID, timezone, versions, endpoint, stream mode, and configured budgets.
- Open the timeline and mark the last completed and first slow, failed, or active span.
- Inspect that span’s tool arguments, wrapper request, response, result propagation, and error details.
- Classify the failure as validation, identity, resource, rate, timeout/network, or server/environment.
- Replay a sanitized request outside the agent from the same environment.
- Correct the underlying contract or access issue, or apply a bounded retry only when the error is transient and replay-safe.
- Check for completed side effects after any ambiguous disconnect before resubmitting.
- Re-run with per-layer timeouts, an overall deadline, and a loop or turn cap, then preserve the new trace.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

