Asana Browser Agent Cost: GPT-6.1 Sol Test Results
Asana used GPT-6 Astra in Codex to optimize a GPT-6.1 Sol browser workflow. Its case study separates workflow savings from model choice and explains the caching effect.
Asana browser agent cost fell to an estimated $0.47 per run after GPT-6 Astra in Codex helped optimize a GPT-6.1 Sol workflow. OpenAI’s October 9 case study reports a 76x cost reduction and approximately 5x faster runs against the original Model B setup. The useful engineering question is which part came from changing the workflow, rather than simply changing models. Read the official Asana case.
Asana browser agent cost: read the comparisons separately
The study used 144 runs to collect six fields for 32 books: four models, two history budgets, six policies and three repeats. Its estimated model costs were:
| Comparison | Before | After |
|---|---|---|
| Model B workflow optimization | At least $36.21 | $1.24 |
| Optimized Model B versus optimized Sol | $1.24 | $0.47 |
| Sol policy, fixed 480K-character budget | $1.97 | $0.47 |
The baseline includes capped runs and comparisons span study phases. Optimized Sol runs completed correctly. These figures describe one workflow, not an API price cut.
A useful reading order is to examine the same-model row first, then the deployment migration. The first asks whether an application change helps without replacing its model. The second asks which complete setup a team would choose to operate. Combining those questions into one headline can conceal the contribution of the application itself.
For a model-selection decision, compare candidate models under the same retention policy and task checks. For an infrastructure decision, keep the model fixed while changing request construction. That separation makes an expensive failure actionable: it points either toward the execution policy or toward the model choice, instead of leaving both explanations entangled.
Stable history makes repeat input a different expense
Asana’s best policy retained more text and let screenshots accumulate to 20 before keeping the newest one. Its optimized Sol workflow served 89% of input from cache.
OpenAI’s prompt caching documentation explains the mechanism: reuse depends on an unchanged rendered prefix, including compatible tools and settings. A saved session alone does not establish reuse. Editing earlier messages or changing tool definitions can move the first mismatch toward the beginning, leaving later content unable to reuse that prefix.
Consider an untested browser trace: the agent reads a product page, opens its specifications, then checks shipping. If each turn removes a screenshot near the beginning, the next request may no longer share the earlier sequence. An alternative is to append observations while maintaining a deliberate retention boundary. The policy can then be evaluated for both reuse and whether the agent still knows which product it is examining.
This is a retention decision, not an instruction to preserve everything forever. Removing obsolete observations may reduce total work even when cache share falls. Our earlier caching-controls report owns the general setup instructions; this case highlights why browser-history edits deserve their own experiment.
Price cache reads, writes and new input separately
The GPT-6.1 Sol model reference lists Standard prices of $2 per million input tokens, $0.10 for cached input, $2.50 for cache writes and $10 for output. Cached reads therefore cost 5% of ordinary input. Above 272K input tokens, the entire request uses doubled input/cache rates and 1.5x output rates. Retained characters are not a measurement of those billed tokens.
An illustrative calculation makes the distinction concrete. Suppose a short-context request reads 100,000 cached tokens and processes 10,000 ordinary new tokens, with no cache-write tokens. Its input subtotal is $0.01 plus $0.02, or $0.03. If those new tokens instead qualify as cache writes, their charge is $0.025 and the input subtotal becomes $0.035. Output and applicable tool or infrastructure expenses belong in separate totals.
Those invented token counts do not reconstruct Asana’s $0.47 result. They show why a billing worksheet needs distinct columns: a high cache percentage does not reveal how many tokens were written, how much output was generated, or which request tier applied. Use the Sol 6.1 reference page for model context rather than assuming a family-wide discount. The site’s existing caching calculator does not currently include this model.
Diagnose the changed request before copying the policy
OpenAI’s cache diagnostics guide provides a request-level check. Select a recent completed response from the same organization and set prompt_cache_options.comparison_response_id on the comparison request. Inspect prompt_cache_diagnostics, then measure actual reuse through usage.input_tokens_details.cached_tokens.
That comparison does not restore the earlier conversation or change caching behavior. A reported hit can still involve new uncached input. Missing or expired comparison records are also different from a demonstrated cache miss.
For a browser replay, our suggested test is to save adjacent request payloads alongside their usage records. Locate the first history edit, then compare an append-only version with the trimming version while holding model, tier and tools constant. Check whether the expected prefix survived; do not infer it from a session identifier. This isolates the proposed mechanism before spending on a larger evaluation.
Next, run both policies on the same task fixtures and mark incomplete runs explicitly. A cheaper run that misses required fields should not share the success label of a complete extraction. Preserve the returned records so a reviewer can assess correctness, not just whether the agent reached its final message.
Measure browser completion time independently
OpenAI’s latency guide distinguishes inference speed, generated output, request count and other application work. Sequential requests add round-trip overhead; fewer input tokens alone may produce only a small improvement outside large-context workloads. Independent steps can run in parallel, while dependent steps require their results first.
For this kind of browser task, record a timeline with model requests, page loading and tool execution separately. An improvement in cached-input billing is not a measurement of page-navigation speed. Likewise, parallel test execution can shorten the study without shortening an individual customer’s run.
Asana has shipped the browser-navigation changes in StackAI. For another team, the transferable decision is to test the relationship between retained evidence, request reuse and completed tasks. Keep the Astra model’s role as experiment driver separate from the model executing the browser workflow, and select a production configuration from your own checked results.