You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
What's Changed
Breaking Changes
exec_command: remove timeout_secs parameter and timed_out output field (#1123, closes #1122): Both fields push infrastructure policy into the tool contract, conflicting with MCP 2025-11-25 design principles where process lifecycle is managed by the host/client transport layer. Follows the same pattern as the memory_limit_mb/cpu_limit_secs removal in v0.18.3. The internal MetricEvent.timed_out field is preserved for operator telemetry.
Features
analyze_directory: default max_depth from 0 (unlimited) to 3 (#1125, closes #1096): Consumers omitting max_depth previously received unlimited traversal; they now receive depth-3. Pass max_depth=0 explicitly for unlimited traversal (unchanged behavior). Applied as a handler-level params.max_depth.or(Some(3)) -- no serde schema change.
exec_command: login shell PATH on macOS (#1125, closes #1095): exec_command now spawns a login shell (/bin/bash -l -c) on macOS so tools installed via Homebrew, nix, pyenv, or rbenv are visible without requiring APTU_SHELL override. Non-macOS platforms are unchanged. Adds approximately 100-200ms latency per call on macOS (documented in the tool description).
edit_replace: allow empty new_text (#1125, closes #1094): Passing new_text = "" is now valid and deletes the matched block. Previously the handler rejected empty strings.
analyze_file / analyze_module: add unsupported field; reorder tool descriptions (#1128, closes #1127): FileAnalysisOutput and ModuleInfo now carry an unsupported: bool field that is set when the file extension is not in the supported-language list. Tool descriptions are reordered to lead with the most specific guidance.
Bug Fixes
Security: remove raw path interpolation from model-visible error messages (#1124, closes #1117): Raw filesystem paths are no longer interpolated into MCP error message strings. Paths are stored in structured metadata (JSON) instead, preventing path leakage to AI models while preserving semantic content such as file previews and line numbers.