All Products
Search
Document Center

Tablestore:Limitations and notes

Last Updated:Jul 06, 2026

Quotas and limits that apply to MemoryStore regions, memory stores, write operations, searches, Scope, SDK versions, and agent plugins.

Regions

MemoryStore is available only in the China (Beijing) region.

Memory store limits

Item

Limit

Memory store name characters

Letters, digits, and underscores only

Memory store name length

Up to 32 characters

Memory store description length

Up to 1,024 characters

After you create a memory store, index initialization takes about one minute. Wait for initialization to finish before you write or search data.

AddMemories limits

Item

Limit

messages count

Up to 20

messages total content length

Up to 32,000 characters

text length

Up to 32,000 characters

messageId length

Up to 256 characters

metadata key count

Up to 16

metadata key length

Up to 64 characters

metadata value length

Up to 1,024 characters

Provide at least one of messages or text. When you write memories, the wildcard * is not allowed in the Scope.

SearchMemories defaults

Parameter

Default

Description

topK

10

Number of results to return. Valid values: 0~50.

enableRerank

true

Whether to enable reranking.

When you search long-term memories, appId and tenantId are required. You can use the wildcard * for agentId and runId.

Memory consolidation (Dream) limits

CreateMemoryDreamTask limits

Item

Limit

scopes count

Required. Up to 20.

maxSessions

0~100

maxMessages

0~20000

maxMemories

0~5000

expandedScopeLimit

0~1000

instructions length

Up to 4,000 characters

actionIds (ApplyMemoryDreamActions)

Up to 100 per call

Enum values

Field

Values

taskType

memory (default) / skill / profile

applyMode

proposal (default) / safe_auto. Supported only when taskType=memory.

scopeOutputMode

preserve_scope (default) / promote_scope

confidenceThresholds keys

add / update / merge. Values range from 0~1. DELETE does not support auto confidence thresholds.

Task status (task status)

queued / running / planning / applying / completed / completed_with_failures / failed / cancelled

Action type (action)

ADD / UPDATE / DELETE / MERGE / NOOP / EMIT_SKILL / EMIT_PROFILE

Action status (action status)

proposed / applied / skipped / failed

Async tasks and list pagination

API

Default limit

Maximum limit

ListMemoryTasks

50

100

ListMemoryStoreScopes

100

100

ListMemoryDreamTasks

50

100

ListMemoryDreamActions

100

100

Extraction task status (ListMemoryTasks.status or the task.status returned by GetMemoryTask): queued / running / completed / failed / needs_reconcile.

Scope rules

Operation

Scope requirement

Wildcard * allowed

Write memories

appId is required. Empty levels default to __default__.

No

Search long-term memories

appId and tenantId are required.

agentId and runId allow wildcards

Query short-term memories

All four Scope levels are required.

No

Get a single long-term memory

All four Scope levels are required.

No

Update a single long-term memory

All four Scope levels are required.

No

Delete a single long-term memory

All four Scope levels are required.

No

List long-term memories

Specify Scope by level.

Yes

Query request audits

Specify Scope by level.

Yes

Wildcards must follow hierarchical order. After you use * at a level, all subsequent levels must also use * or be left empty. For example, app-001/user-001/*/* is valid, but app-001/*/agent-001/* is not.

Async write visibility

AddMemories.sync defaults to false (asynchronous). When async write is used:

  • Raw messages are written first and become immediately available as short-term memories.

  • Long-term memory extraction runs in the background.

  • After extraction completes, long-term memories become searchable through SearchMemories.

To view extraction results immediately during testing, set sync to true. Even with synchronous writes, a brief index refresh delay occurs before long-term memories become searchable.

Short-term memory queries

ListMemoryStoreMessages retrieves raw conversation messages. All four Scope levels (appId, tenantId, agentId, and runId) are required. Wildcards are not supported.

Use cases:

  • View raw conversation messages.

  • Replay a specific conversation.

  • Troubleshoot long-term memory extraction issues.

SDK versions

SDK

Minimum version

Python SDK

tablestore >= 6.4.7 (6.4.5 supports basic memory APIs; 6.4.7 adds task tracking and memory consolidation APIs)

Node.js SDK

tablestore >= 5.6.5

CLI

tablestore-agent-cli >= 0.1.8

CLI paging

CLI memory list commands return a single page of results. To retrieve the next page, pass the nextToken from the response.

Example:

tablestore-agent-cli memory list-units \
  --store agent_memory \
  --app-id app-001 \
  --next-token <token>

CLI auto-provisioning

If ots_endpoint and ots_instance_name are not configured, the CLI automatically creates a managed Tablestore instance in the China (Beijing) region when you run the doctor command or perform an operation. Auto-provisioning takes some time, and the result is saved to the local configuration file.

To use a different instance, manually set the endpoint and instance name. The CLI then uses your explicit configuration.

Agent plugin notes

The Hermes and OpenClaw plugins search across agents and conversations by default (agentId=*, runId=*) within the current tenant. If your business requires memory isolation between agents or conversations, use the SDK to control the search Scope directly, or adjust the plugin configuration.