Skip to content

docs(billing): clarify agent hours per harness on the platform credits page - #677

Draft
hongyi-chen wants to merge 1 commit into
docs/platform-credits-agent-hoursfrom
docs/platform-credits-agent-hours-harness
Draft

docs(billing): clarify agent hours per harness on the platform credits page#677
hongyi-chen wants to merge 1 commit into
docs/platform-credits-agent-hoursfrom
docs/platform-credits-agent-hours-harness

Conversation

@hongyi-chen

Copy link
Copy Markdown
Collaborator

Summary

Follow-up to #672, targeting its branch. Incorporates the Slack review of the agent-hours definition: keep it high level, but make it accurate across harnesses.

Two things in the current wording needed adjusting:

  • The Warp Agent and third-party harnesses meter differently. With the Warp Agent, the clock only runs while the agent is generating a response; time spent waiting on a command or tool it ran (a five-minute cargo check, a test suite) isn't billed. With Claude Code and Codex, the whole run is billed, including command execution and time waiting on the model provider. The page now says this in two bullets, without naming internals.
  • "Or pauses for your input" was carrying too much weight. It's true for the Warp Agent, but cloud runs on third-party harnesses auto-approve, so they aren't usually waiting on anyone. Dropped it from the stop conditions; idle time waiting for a follow-up stays excluded, which holds for every harness.

Also, per the thread on agent hours being the unit Warp Factories are sold on: the section now leads with agent hours as the meter for platform usage, notes that Enterprise contracts set the rate, and says billing views show credits rather than hours (users don't see hours in-product today).

Changes

src/content/docs/support-and-community/plans-and-billing/platform-credits.mdx only. Sibling billing pages already carry a one-line definition and link here for the full breakdown, so they're unchanged.

How platform credits are measured now reads:

Platform usage is metered in agent hours, the time an agent spends working on a task, and billed as platform credits. Time is counted exactly rather than rounded up to whole hours, so a run that works for 15 minutes bills a quarter of an agent hour. See Warp pricing for current rates; on Enterprise plans, the rate is set by your contract.

The clock starts when the agent starts up in its environment, including any environment setup the run performs, and stops when the run finishes, fails, or is cancelled. Time spent queued before the agent starts, and time a run spends idle waiting for your next message, don't count.

Within that window, how much time counts depends on the harness:

  • Warp Agent - The clock runs while the agent is generating a response and pauses while a command or tool the agent ran is executing, so a five-minute test suite doesn't add to the run's agent hours.
  • Claude Code and Codex - The clock runs for the whole run, including command execution and time spent waiting on the model provider.

Plus "metered in agent hours" in the intro and "as credits rather than agent hours" in Where platform credits appear.

Verification against warp-server

  • Per-stream segments for the Warp Agent: router/handlers/generate_multi_agent_output.go calls OpenSegmentForStream before the agent loop starts and CloseSegmentForStream when the stream ends. Each stream handles one input (a user query or a single tool-call result); the client executes the tool between streams, so no segment is open while a command runs.
  • Whole-run segments for Claude Code and Codex: nothing touches in_progress_since between the driver's IN_PROGRESS report and the terminal transition, so maybeChargeForPlatformUsage in logic/ai/ambient_agents/task_lifecycle.go bills the entire window.
  • Environment setup is inside the window for both: the sandbox driver (warp/app/src/ai/agent_sdk/driver.rs) reports IN_PROGRESS before environment setup, and the first Warp Agent stream's EnsureInProgressSegmentStarted is a no-op on an already-open segment.
  • Idle between turns is unbilled for both: turn completion is a terminal transition that closes the segment; a follow-up re-enters IN_PROGRESS and opens a new one.
  • Enterprise rate is per contract: every enterprise tier YAML under billing/config/tiers/ carries platform_credits_per_minute_override, read via GetPlatformCreditsPerMinuteOverrideFromBillingMetadata in billing/platform.go.
  • Exact time, not rounded: ChargeForPlatformUsage multiplies fractional duration.Minutes() by the per-minute rate.

Validation

…se boundary

Follow-up to the agent-hours definition on the platform credits page,
incorporating engineering review of the metering behavior:

- Describe how much of a run counts per harness. The Warp Agent clock
  runs while the agent is generating a response and pauses while a
  command or tool it ran is executing, so a long build or test suite
  doesn't add to agent hours. Claude Code and Codex bill the whole run,
  including command execution and time waiting on the model provider.
- Drop "pauses for your input" from the stop conditions. It held for the
  Warp Agent but not for third-party harnesses, which auto-approve in
  cloud runs. Idle time waiting for a follow-up stays excluded.
- Frame agent hours as the meter for platform usage, note that Enterprise
  contracts set the rate, and say that billing views show credits rather
  than hours.

Verified against warp-server: OpenSegmentForStream/CloseSegmentForStream
bound each Warp Agent stream in generate_multi_agent_output.go, while
third-party harness runs only close their segment on the terminal
transition (task_lifecycle.go, platform.go).

Co-Authored-By: Warp <agent@warp.dev>
@cla-bot cla-bot Bot added the cla-signed label Sep 3, 2026
@vercel

vercel Bot commented Sep 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
docs Ready Ready Preview Sep 3, 2026 12:57am UTC

Request Review

Copy link
Copy Markdown
Collaborator Author

This PR was generated with Warp.

Comment @warp-agent on this PR to send it follow-up work.

View run View conversation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant