# Hardi agents V2 — limits

Contract: 2. Revision: 2026-11-03. Status: available to active verified Hardi accounts; Free, Plus and Pro retain their native limits.

Native plan capacities are shared with the app, not separate agent allowances. Free supports five saved workouts, three counted planned occurrences and one calendar. Context also returns current used/remaining capacity and reset timestamps. This is advisory and reserves nothing; native quotas are checked again in each transaction.

Static transaction/storage bounds and legacy fallback ceilings (active admission comes from context): {
  "actions": 10,
  "objects": 50,
  "workouts": 10,
  "blocks": 100,
  "occurrences": 28,
  "days": 28,
  "executionsPerDay": 20,
  "executionsPilotPerDay": 200,
  "simulationsPerDay": 50,
  "simulationsPilotPerDay": 500,
  "payloadBytes": 524288,
  "userStorageBytes": 67108864,
  "pilotStorageBytes": 268435456,
  "undoDays": 7,
  "receiptDays": 30,
  "newRequestMaxAgeMs": 86400000,
  "clockSkewMs": 300000
}

Legacy policy only, while weighted admission is disabled: read admission 30/minute/connection, 60/minute/user, 10,000/day/pilot. Write/simulation admission: 3/minute/user. Successful writes: 20/day/user, 200/day/pilot. Simulations: 50/day/user, 500/day/pilot. New workouts: 50/day/user, 300/day/pilot, in addition to plan quotas. Token issues: 200/day/connection, 500/day/user, 4,000/day/pilot. Request 256 KiB; response 64 KiB. Calendar/library/template versions and dependency integrity use transactional native-write revision stamps, so pagination never loads the entire history for its version. Older receipts retain legacy checks until their seven-day undo expires. Cleanup is bounded and continues while writes are disabled.

Scopes: catalog:read workouts:read workouts:create workouts:update workouts:delete workouts:restore folders:read folders:write folders:delete calendars:create workout-results:read planning:read planning:create planning:update planning:delete actions:read actions:undo preferences:read preferences:write settings:read settings:write training:read training:write cycles:read cycles:write cycles:delete templates:read templates:write templates:delete.


Expanded authorizations default to no absolute expiration. Temporary 1/7/30-day grants remain available. Access tokens expire after 15 minutes; rotating refresh credentials retain a finite rolling 30-day idle lifetime, capped by any grant deadline. Existing grants keep their deadline and selected resources. More permissions, all current/future calendars or a longer deadline require native consent, never an agent command. A long idle period, revocation or a security event can require reconnection.

Detailed context usage separates native plan capacities, account admission budgets and sharedPilot budgets, including Training read attempts and reset timestamps. These are advisory and reserve nothing. Rate-limit errors identify the exhausted budget scope and reset time without account identifiers. With weighted admission enabled, normal work shares account and pilot token buckets and bounded concurrency. The uniform 20 executions/day, 50 new workouts/day, read and simulation daily ceilings are replaced together. Retained user-selected legacy daily restrictions remain effective until explicit native reauthorization removes them. Recovery of receipts and conditional undo have a separately bounded reserve. Context returns the active numeric rates, bursts, policy version and current advisory budgets; do not assume the legacy ceilings apply. Outside the enabled cohort the legacy policy remains in force.
