Limits & Constraints

February 14, 2026 ยท View on GitHub

System limits and constraints for Probe CLI and Probe Agent.


Probe CLI Limits

Search Limits

LimitDefaultConfiguration
Max resultsUnlimited--max-results N
Max bytesUnlimited--max-bytes N
Max tokensUnlimited--max-tokens N
Timeout30 seconds--timeout N

Merge Threshold

LimitDefaultConfiguration
Block merge distance5 lines--merge-threshold N

Session Caching

LimitDefaultDescription
Cache sizeAutomaticBased on available memory
Session lifetimeUntil invalidationInvalidated on file changes

Probe Agent Limits

Tool Iterations

LimitDefaultConfiguration
Max iterations30maxIterations option

Timeouts

LimitDefaultConfiguration
Request timeout120,000 msrequestTimeout option
Operation timeout300,000 msmaxOperationTimeout option
Engine activity180,000 msENGINE_ACTIVITY_TIMEOUT env

Engine Activity Timeout Range:

  • Minimum: 5,000 ms (5 seconds)
  • Maximum: 600,000 ms (10 minutes)
  • Default: 180,000 ms (3 minutes)

Delegation Limits

LimitDefaultConfiguration
Concurrent global3MAX_CONCURRENT_DELEGATIONS
Per session10MAX_DELEGATIONS_PER_SESSION
Queue timeout60,000 msDELEGATION_QUEUE_TIMEOUT
Execution timeout300 secondsDELEGATION_TIMEOUT

Retry Limits

LimitDefaultConfiguration
Max retries3retry.maxRetries
Initial delay1,000 msretry.initialDelay
Max delay30,000 msretry.maxDelay
Backoff factor2retry.backoffFactor

Retry Limits Range:

  • Max retries: 0-100
  • Initial delay: 0-60,000 ms
  • Max delay: 0-300,000 ms
  • Backoff factor: 1-10

Fallback Limits

LimitDefaultConfiguration
Max total attempts10fallback.maxTotalAttempts

Range: 1-100


MCP Limits

Timeouts

LimitDefaultConfiguration
Request timeout30,000 mssettings.timeout
Max timeout1,800,000 msMCP_MAX_TIMEOUT

Max Timeout Range:

  • Minimum: 30,000 ms (30 seconds)
  • Maximum: 7,200,000 ms (2 hours)
  • Default: 1,800,000 ms (30 minutes)

Provider Context Windows

ProviderModelContext Window
AnthropicClaude Sonnet200,000 tokens
AnthropicClaude Haiku200,000 tokens
OpenAIGPT-4o128,000 tokens
OpenAIGPT-4o-mini128,000 tokens
GoogleGemini 1.5 Pro1,000,000+ tokens
GoogleGemini 2.0 Flash1,000,000+ tokens

Skill Limits

LimitValueDescription
Skill name length64 charactersMaximum skill name
Description length400 charactersAuto-truncated
Skill name pattern[a-z0-9-]+Lowercase alphanumeric + hyphens

Task Limits

LimitDescription
Task ID formattask-1, task-2, ...
DependenciesMust reference existing task IDs
Circular dependenciesNot allowed

Image Limits

LimitValueDescription
Max file size20 MBPer image
Supported formatsPNG, JPG, JPEG, WebP, BMP, SVG

Bash Execution Limits

Probe Chat

LimitDefaultConfiguration
Command timeout120,000 ms--bash-timeout

Memory Considerations

Large Codebases

For codebases with 100,000+ files:

  1. Use result limits: --max-results 100
  2. Use session pagination: --session my-search
  3. Use language filters: --language rust
  4. Increase Node.js memory: NODE_OPTIONS=--max-old-space-size=8192

Parser Pool

SettingDefaultConfiguration
Pool sizeCPU coresPROBE_PARSER_POOL_SIZE
Tree cacheAutomaticPROBE_TREE_CACHE_SIZE

Rate Limiting

Provider Rate Limits

Rate limits are provider-specific. Common responses:

Error CodeDescriptionSolution
429Rate limit exceededEnable retry with backoff
503Service overloadedEnable fallback to alternative

Retry Configuration

const agent = new ProbeAgent({
  retry: {
    maxRetries: 3,
    initialDelay: 1000,
    backoffFactor: 2
  }
});

Best Practices

1. Set Appropriate Limits

# For AI context windows
probe search "query" ./ --max-tokens 10000

# For large results
probe search "query" ./ --max-results 50 --session my-search

2. Use Pagination

# First batch
probe search "api" ./ --session api-search --max-results 100

# Subsequent batches
probe search "api" ./ --session api-search --max-results 100

3. Configure Timeouts

const agent = new ProbeAgent({
  requestTimeout: 120000,      // 2 minutes per request
  maxOperationTimeout: 600000  // 10 minutes total
});

4. Handle Resource Constraints

// Monitor token usage
const usage = agent.getTokenUsage();
if (usage.contextWindow > 150000) {
  await agent.compactHistory();
}