---
{
  "id": "platform.sheet.limits-and-permissions",
  "topic": "sheet",
  "title": "Sheet limits, permissions, and private execution",
  "locale": "en",
  "version": "2026-08-25",
  "summary": "Sheet calls have pinned per-call, workbook-size, rate, grant, user-visibility, scope, and private-surface boundaries.",
  "content": "Per call, `read_range` allows at most 10,000 cells, 1,000 rows, and 100 columns. `update_cells` allows 5,000 cells. `append_rows` allows 500 rows and no more than 5,000 total cells. Read large data in explicit A1 windows; split writes under both relevant limits and chain the returned version after every batch.\n\nA workbook is limited to 50 sheets. Each sheet is limited to 50,000 rows and 1,000 columns; the workbook is limited to 500,000 non-empty cells and 5 MB when serialized. A mutation exceeding these bounds fails with `invalid_arguments`; do not retry the same oversized request. Every user also has one shared sliding limit across all Sheet Actions: 60 calls per 60 seconds. `rate_limited` includes retry metadata; wait for the window instead of immediately flooding retries.\n\nRead access is the intersection of an Agent grant to the workbook and visibility for the triggering user as workbook owner, space owner, or space member. Mutation additionally requires an Agent write grant, either directly or through a space-document write grant. If the Agent has only read access, mutation returns `permission_denied: agent has read-only access to this workbook`; ask the user to change that Agent’s workbook grant instead of trying another write shape.\n\nWith no access, runtime returns `resource_not_found: workbook not found`, intentionally hiding whether the workbook exists. Never infer or reveal more. Runtime enforces separate scopes including `sheet:create`, `sheet:read`, `sheet:write`, `sheet:delete`, `sheet:export`, `sheet:version:read`, and `sheet:version:write`; a knowledge card grants none of them. All Sheet Actions have `allow_in_public: false`, so they cannot execute from a public conversation. Registry permission, confirmation, redaction, quota enforcement, audit, and typed errors remain authoritative.\n",
  "aliases": [
    "sheet limits",
    "workbook quota",
    "rate limited",
    "read only workbook",
    "permission denied",
    "resource not found",
    "public conversation",
    "試算表限制",
    "唯讀授權"
  ],
  "tags": [
    "sheet",
    "limits",
    "permissions",
    "safety"
  ],
  "relatedActions": [
    "arinova.sheet.create_workbook",
    "arinova.sheet.get_workbook_summary",
    "arinova.sheet.read_range",
    "arinova.sheet.update_cells",
    "arinova.sheet.append_rows",
    "arinova.sheet.list_versions",
    "arinova.sheet.restore_version"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/sheet/limits-and-permissions/"
}
---

Per call, `read_range` allows at most 10,000 cells, 1,000 rows, and 100 columns. `update_cells` allows 5,000 cells. `append_rows` allows 500 rows and no more than 5,000 total cells. Read large data in explicit A1 windows; split writes under both relevant limits and chain the returned version after every batch.

A workbook is limited to 50 sheets. Each sheet is limited to 50,000 rows and 1,000 columns; the workbook is limited to 500,000 non-empty cells and 5 MB when serialized. A mutation exceeding these bounds fails with `invalid_arguments`; do not retry the same oversized request. Every user also has one shared sliding limit across all Sheet Actions: 60 calls per 60 seconds. `rate_limited` includes retry metadata; wait for the window instead of immediately flooding retries.

Read access is the intersection of an Agent grant to the workbook and visibility for the triggering user as workbook owner, space owner, or space member. Mutation additionally requires an Agent write grant, either directly or through a space-document write grant. If the Agent has only read access, mutation returns `permission_denied: agent has read-only access to this workbook`; ask the user to change that Agent’s workbook grant instead of trying another write shape.

With no access, runtime returns `resource_not_found: workbook not found`, intentionally hiding whether the workbook exists. Never infer or reveal more. Runtime enforces separate scopes including `sheet:create`, `sheet:read`, `sheet:write`, `sheet:delete`, `sheet:export`, `sheet:version:read`, and `sheet:version:write`; a knowledge card grants none of them. All Sheet Actions have `allow_in_public: false`, so they cannot execute from a public conversation. Registry permission, confirmation, redaction, quota enforcement, audit, and typed errors remain authoritative.
