Error Codes¶
Use this page when the CLI prints an HTTP error such as
400 [object_too_large_for_cat], when an HTTP client receives an error
envelope, or when a job reports a canonical failure code.
Switch on code, not detail
The runtime envelope has a stable code, human detail, and optional
suggestions. Client code and SDK integrations should branch on code.
Treat detail and suggestions as display text and recovery hints.
{
"code": "object_too_large_for_cat",
"detail": "...",
"suggestions": ["head", "cat --range", "export"]
}
The Rust CLI surfaces this envelope on non-2xx responses as:
chunk_max_exceeded is the exception to the normal HTTP-error pattern: it is
reported as partial search availability or search_status: partial, not as a
hard failed request.
Triage Map¶
| If the code or status is about | Start with | Then open |
|---|---|---|
| Authentication or request shape | mfs status, mfs config show, or inspect the HTTP request body |
Troubleshooting, Auth and Secrets, HTTP API |
| A path, object, locator, or read operation | mfs ls PATH --json, mfs head PATH -n 20, or mfs cat PATH --range A:B |
Search and Browse, Troubleshooting |
| A queued or running ingest job | mfs job list, then mfs job show JOB_ID |
Troubleshooting |
| A connector source or credentials | mfs connector inspect TARGET, then mfs connector probe TARGET --config FILE |
Connectors |
| Search availability is partial, building, or unavailable | mfs ls PATH --json, mfs job list, and bounded browse commands |
Search and Browse, Troubleshooting |
Runtime and Request Codes¶
These codes come from the API error wrapper, request validation handler, auth middleware, and the canonical protocol table.
| Code | HTTP | Usually means | First action | Deeper guide |
|---|---|---|---|---|
unauthorized |
401 | Server auth is enabled and the bearer token is missing or wrong. | Check MFS_API_TOKEN, the active profile, or the local server.token fallback. |
Auth and Secrets |
validation_error |
422 | FastAPI or Pydantic rejected the request shape. | Fix the JSON body, query parameter, or field type. | HTTP API: Errors |
bad_request |
400 | A non-canonical 400 detail reached the runtime wrapper, such as malformed locator JSON or an empty upload body. | Re-check the command flags or HTTP request parameters. | HTTP API |
not_found |
404 | Path, object, connector, or job id does not match current server state. | Use mfs connector list, mfs ls PATH --json, or mfs job list to find the current identifier. |
Troubleshooting |
conflict |
409 | A non-canonical conflict reached the runtime wrapper. | Inspect the in-flight job or retry after the conflicting operation finishes. | Jobs |
internal_error |
500 | An uncaught server exception reached the fallback handler. | Capture the request, server logs, and current job or connector state before retrying. | Server, Troubleshooting |
Read and Browse Codes¶
| Code | HTTP | Usually means | First action | Deeper guide |
|---|---|---|---|---|
object_too_large_for_cat |
400 | Full cat would read too much into one response. |
Use mfs head PATH -n 20, mfs cat PATH --range A:B, or mfs export PATH OUT. |
Search and Browse: Error Recovery |
is_directory |
400 | cat, head, tail, or export was requested for a directory/container. |
Use mfs ls PATH --json or mfs tree PATH -L 2, then read a child object. |
Troubleshooting: Read and Browse Errors |
range_unsupported |
400 | The object type cannot serve the requested range. | Use mfs cat PATH --meta or mfs export PATH OUT. |
Search and Browse |
density_unsupported |
400 | --peek, --skim, or a density view was requested for an unsupported object. |
Use mfs head PATH -n 20 or mfs cat PATH --range A:B. |
Search and Browse: Error Recovery |
tail_unsupported |
400 | The object has no stable ordering for tail reads. | Use mfs head PATH -n 20 or a bounded mfs cat PATH --range A:B. |
Troubleshooting: Read and Browse Errors |
locator_not_found |
404 | The structured record or text range locator is no longer present. | Re-run search with --json, copy the current locator, then retry cat --locator. |
Search and Browse: Locate Exact Hits |
Sync, Connector, and Upload Codes¶
| Code | HTTP | Usually means | First action | Deeper guide |
|---|---|---|---|---|
since_unsupported |
400 | --since was used with a connector that does not support a time cursor. |
Drop --since or use a connector-specific cursor only where documented. |
Connectors |
sync_already_running |
409 | A sync job is already in flight for that connector. | Run mfs job list, then wait or run mfs job cancel JOB_ID if the job should stop. |
Jobs |
connector_removing |
409 | The connector is being removed and cannot start new work. | Wait for removal to finish, then retry. | Connectors |
connector_unhealthy |
502 | The source is unreachable or credentials/connectivity failed. | Check server-side credentials and network reachability, then probe the connector. | Connectors, Troubleshooting: Connector Failures |
field_missing |
400 | A configured structured-source text field is absent. | Fix the connector [[objects]] config, then re-run add or update. |
Connectors |
upload_rejected |
400 | Upload was required by topology, but upload was disabled. | Adjust the path mode or profile; for isolated servers use mfs add --upload PATH. |
Troubleshooting: Upload or Shared Filesystem |
upload_not_applicable |
400 | Upload was forced where shared-filesystem mode applies. | Adjust upload flags or profile for the current topology. | Troubleshooting: Upload or Shared Filesystem |
Provider and Job Failure Codes¶
These codes may appear as immediate API errors, CLI errors, or job error fields depending on when the failure is detected.
| Code | HTTP | Usually means | First action | Deeper guide |
|---|---|---|---|---|
embedding_quota_exceeded |
502 | The embedding provider is out of quota. | Fix quota or billing, then re-run mfs add .... |
Providers and processing, Jobs |
embedding_auth_failed |
502 | The embedding provider key is missing or invalid. | Fix the provider key in the server environment or config, then re-run mfs add .... |
Providers and Processing |
circuit_breaker_tripped |
502 | Too many consecutive fatal or exhausted object failures caused the job to abort. | Fix the root cause shown by mfs job show JOB_ID, then re-run add. |
Troubleshooting: Jobs and Indexing |
Partial Search Status¶
chunk_max_exceeded is recorded as incomplete indexing rather than a normal
HTTP error. Search can still return results, but recall may be incomplete.
| Status surface | Values | What to do |
|---|---|---|
| Source-level availability | available, partial, building, unavailable |
Use search when available, verify more carefully when partial, browse while building, and use browse/grep when unavailable. |
mfs ls PATH --json entry status |
indexed, partial, not_indexed, or null |
Treat partial as searchable but incomplete; treat not_indexed or null as browse-first. |
| Canonical partial code | chunk_max_exceeded |
Narrow the source or adjust verified connector object settings such as chunk_max, then re-run add. |
When search availability is partial, verify with exact browse commands before using a result:
mfs search "release checklist" PATH --top-k 25 --json
mfs grep "release checklist" PATH --json
mfs cat SOURCE --range A:B
Use Search and Browse for the mental model and Troubleshooting for recovery steps.