plandex-ai/plandex · error
map has too many paths: %d
Error message
map has too many paths: %d
What it means
After merging params.MapBodies into context.MapParts, UpdateContexts enforces shared.MaxContextMapPaths (3000). If the resulting map would contain more than 3000 paths, the update is rejected. This bounds the size of the combined repo map sent to the model.
Source
Thrown at app/server/db/context_helpers_update.go:299
}
// prevNumTokens := context.MapTokens[path]
context.MapParts[path] = part
context.MapShas[path] = params.InputShas[path]
context.MapTokens[path] = params.InputTokens[path]
context.MapSizes[path] = params.InputSizes[path]
}
for _, path := range params.RemovedMapPaths {
delete(context.MapParts, path)
delete(context.MapShas, path)
delete(context.MapTokens, path)
delete(context.MapSizes, path)
}
if len(context.MapParts) > shared.MaxContextMapPaths {
errCh <- fmt.Errorf("map has too many paths: %d", len(context.MapParts))
return
}
totalMapSize := 0
for _, part := range context.MapParts {
totalMapSize += len(part)
}
if totalMapSize > shared.MaxContextBodySize {
errCh <- fmt.Errorf("map total size is too large: %d", totalMapSize)
return
}
context.Body = context.MapParts.CombinedMap(context.MapTokens)
newNumTokens := shared.GetNumTokensEstimate(context.Body)
tokenDiff := newNumTokens - oldNumTokens
mu.Lock()
tokenDiffsById[id] = tokenDiffView on GitHub (pinned to e2d772072e)
Solutions
- Reduce the set of mapped paths — map only directories/files relevant to the plan
- Prune stale entries from context.MapParts before the update (delete removed paths)
- Use more selective mapping (subdirectories instead of repo root)
- Check the client's delete logic: paths removed on disk should be deleted from MapParts/MapShas/MapTokens/MapSizes in the update
Example fix
// before
// send MapBodies containing every file in repo
// after
if len(mapBodies)+existingCount > 3000 {
mapBodies = prioritizePaths(mapBodies, planRelevantPaths)
} Defensive patterns
Strategy: validation
Validate before calling
if len(context.MapParts)+len(newMapBodies) > 3000 {
return fmt.Errorf("would exceed MaxContextMapPaths=3000; prune paths first")
} Try / catch
err := updateContexts(req)
if err != nil && strings.Contains(err.Error(), "map has too many paths") {
return fmt.Errorf("reduce mapped path set below 3000 and retry: %w", err)
} Prevention
- Cap mapped paths well below 3000 (prioritize plan-relevant files)
- Delete removed paths from MapParts on every update
- Map directories selectively instead of entire repos
- Monitor path count growth across successive updates
When it happens
Trigger: A map context update that adds enough new paths to push context.MapParts over 3000 entries — typically mapping a whole large repo, a big directory, or re-adding paths that should have been deleted.
Common situations: Pointing a plan at a monorepo or vendor directory with thousands of files; client bug that never deletes removed paths from MapParts; retry loops that re-add all paths on each update.
Related errors
- map input %s is too large: %d
- map total size is too large: %d
- invalid context index: %s
- no context found with name: %s
- invalid value: %s
AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05).
Data as JSON: /api/errors/51b89b8ddf703044.
Report an issue: GitHub.