Varjo headsets connect to a PC running Varjo Base software alongside the user’s application — a complex stack interfacing with specialized hardware and third-party software. When something goes wrong, the headset generates diagnostic logs that require deep familiarity with the stack to interpret. A typical upload is 50–100 MB compressed. Customer-facing teams handle support requests around PC compatibility, application conflicts, and firmware issues, but lack the expertise for investigative log analysis. They rely on tooling, and what tooling can’t resolve escalates to R&D.
In my 2025 reflections, I described building an internal tool to address this. It runs a structured, single-pass pipeline: parses the diagnostics, applies known heuristics, and produces a report delivered to support within minutes. R&D escalations dropped 50% in the second half of 2025.
This handles the majority of cases. But when the issue is novel or the root cause is buried in implementation details, a single-pass pipeline reaches its limits. Tracing a crash through the codebase, understanding why a firmware update fails in a specific environment, correlating log behavior against source code — that requires forming hypotheses, checking them, and iterating. It is difficult to template.
An agent instead of a pipeline
Airut — the open-source system I wrote about previously — runs Claude Code in sandboxed containers, with email and Slack as the interface. Since Claude Code in the container can do arbitrary investigative work — not just run a fixed pipeline — the same infrastructure could give customer support access to deeper diagnostic capability without requiring R&D involvement.
The setup: a dedicated email address maps to a sandboxed Claude Code instance via Airut. When a support engineer sends an email requesting deep analysis of a customer’s diagnostics, the agent downloads the diagnostic bundle, extracts and analyzes the logs, and has access to the Varjo Base and headset firmware source code to trace issues to their root cause. The agent replies to the email with its findings. Support engineers can reply back to ask follow-up questions, provide additional context from the customer, or challenge the analysis — the agent maintains full conversation context across the thread.
The workflow for the support team:
- Send an email with a link to the customer’s diagnostics and any context about the reported issue
- Receive analysis back in the same thread
- Reply to ask follow-up questions or provide new information from the customer
- Iterate until the root cause is identified and a resolution is clear
There is no new tool to learn. It is email.
A concrete result
Shortly after rolling this out, a support engineer was working a case where a customer’s headset firmware update was failing consistently. He emailed the agent with the diagnostics and a description of the symptoms. Through a series of email exchanges — providing additional observations from the customer, asking the agent to investigate specific hypotheses — he was able to determine that the customer’s enterprise endpoint management software was interfering with the USB communication required for the firmware update process.
The agent traced the failure through the firmware update logs, correlated it against the USB device handling code, and identified the specific point where the process was being interrupted. This gave the support engineer enough information to formulate a concrete request to the customer’s IT department: allowlist a specific USB device VID/PID to permit the firmware update to proceed.
This is a case that would previously have been escalated to R&D. Instead, it was resolved in the support team’s own workflow, through a series of email exchanges with an AI agent.
Cost structure
The agentic analysis, where Claude Code iterates through logs and source code across multiple turns, costs roughly two orders of magnitude more per session than the single-pass pipeline analysis. Whether that trade-off is favorable depends on what it displaces. An R&D engineer investigating a customer issue carries fully loaded engineering cost plus the opportunity cost of the work they defer. The customer also gets a faster resolution.
Observations
The meaningful shift is from pattern detection to investigative work — the kind an R&D engineer does when tracing a novel issue through logs and source code. Claude Code’s flexibility as a general-purpose agent makes this possible without predefined analysis steps: it follows whatever thread the investigation requires. Combined with speed, this means support gets results in tens of minutes rather than waiting for R&D to schedule the investigation into their next sprint or pulling an engineer off their current work.
The single-pass analysis is automated: input goes in, report comes out. The agentic version is different because the support engineer stays in the loop, steering the investigation based on what they know about the customer’s environment. The agent handles the technical depth; the support engineer provides context and judgment about the customer’s situation.
The agent has access to product source code and processes customer data. Airut’s container isolation, network allowlisting, and surrogate credential system are what make it possible to grant that level of access. Running an autonomous agent with access to proprietary code and customer data requires proper isolation at the infrastructure level.
The tool has been in use for several weeks. It does not replace R&D involvement for all cases — some issues require engineers with deep domain expertise. But it has expanded the set of cases that support can resolve independently, and reduced the time to resolution for issues that previously required multi-day R&D investigation cycles.