|
Entropic 2.14.3
Local-first agentic inference engine
|
Filesystem MCP server configuration. More...
#include <entropic/types/config.h>
Public Attributes | |
| bool | diagnostics_on_edit = true |
| Proactive diagnostics on edit/write. | |
| bool | fail_on_errors = true |
| Rollback edit if it introduces errors. | |
| float | diagnostics_timeout = 1.0f |
| Diagnostics timeout (0.1–5.0) | |
| OutsideRootAccess | allow_outside_root = OutsideRootAccess::optional |
| Paths OUTSIDE the root: refuse, allow, or ask (v2.13.0). | |
| std::vector< std::filesystem::path > | outside_root_allow |
| Pre-approved subtrees outside the root — no prompt (v2.13.0). | |
| std::vector< std::filesystem::path > | outside_root_deny |
| Subtrees outside the root that are ALWAYS refused (v2.13.0). | |
| std::optional< int > | max_read_bytes |
| Byte budget of ONE read_file window (nullopt = derive from context). | |
| float | max_read_context_pct = 0.25f |
| Context share for one read_file window (when max_read_bytes is unset) | |
| int | max_walk_entries = 250000 |
| Hard cap on directory entries visited by ONE glob or grep walk; <= 0 disables the cap (gh#161). | |
| OutsideRootAccess entropic::FilesystemConfig::allow_outside_root = OutsideRootAccess::optional |
Paths OUTSIDE the root: refuse, allow, or ask (v2.13.0).
Defaults to optional. Until v2.13.0 this was a bool and data/default_config.yaml shipped it true, so every consumer on the bundled defaults gave the model unconfined READ and WRITE of the whole filesystem — through read_file, write_file, edit_file and list_directory — without anyone having chosen that. optional sends each escaping path to the host's path approver (entropic_set_path_approval_callback) with the resolved path and read/write; with no approver registered the call is REFUSED with a typed outside_root_approval_required message. It never fails open.
Precedence, highest first: outside_root_deny (always refused), outside_root_allow (served, no prompt), then this setting. A path inside the root is always served. permissions.auto_approve does NOT approve an escape: it skips per-TOOL prompts, it does not widen the filesystem boundary. A named workspace's own servers are forced to refuse with an empty allow list and no approver (gh#166).
| float entropic::FilesystemConfig::diagnostics_timeout = 1.0f |
| std::optional<int> entropic::FilesystemConfig::max_read_bytes |
| int entropic::FilesystemConfig::max_walk_entries = 250000 |
Hard cap on directory entries visited by ONE glob or grep walk; <= 0 disables the cap (gh#161).
The pre-2.13.0 caps were on MATCHES only (500 for glob, 100 for grep), so a pattern that matched almost nothing still walked the whole tree — 187,855 entries on the repository that reported gh#161, where a single glob **‍/*.hpp took 87 seconds. A tool call that blocks the agent loop for a minute and a half is a hang from the model's point of view: it cannot see that it is waiting, and a consumer with a request timeout drops the turn.
250,000 is deliberately generous — larger than any first-party checkout, so it never fires on a normal workspace and is not a silent result filter. It is a CEILING that converts an open-ended stall into a bounded, ANNOUNCED result: hitting it appends an explicit truncation notice to the tool result (and a warning to the log), because a silently short answer would be worse than the hang it replaces.
| std::vector<std::filesystem::path> entropic::FilesystemConfig::outside_root_allow |
| std::vector<std::filesystem::path> entropic::FilesystemConfig::outside_root_deny |