3.5 KiB
CLI and MCP compatibility
This checkpoint records the compatibility decision after the CLI/MCP surface convergence work. Aliases are not removed solely because they are old.
2026-07-29 checkpoint
Decision: retain every compatibility alias. They remain callable but hidden
from normal CLI help or MCP tools/list/advertised schemas. Calls emit a single
warning or structured deprecation metadata.
Removal is not yet eligible:
- first-party tests still exercise
--input-type binarycompatibility; - Rust/Swift goldens and frontend tests were migrated from
--format jsonto--format sarif, but an explicit compatibility test still covers the old spelling; - repository documentation still contains migration examples and historical research commands using old forms;
- no deprecation telemetry or release feedback channel has produced evidence that external callers have migrated;
- Fold has not crossed the selected major-version boundary.
The earliest eligible removal boundary is Fold 1.0.0. Reaching that version is necessary but not sufficient: a later checkpoint must also show no first-party operational use, review available release feedback/telemetry, and retain migration documentation.
CLI migrations
| Deprecated form | Canonical replacement | Current behavior |
|---|---|---|
fold scan --input-type source ... |
fold scan --mode source ... |
Hidden, callable |
fold scan --input-type binary --binary app |
fold scan --mode binary --binary app |
Hidden, callable |
fold scan --format json -o report.json |
fold scan --format sarif -o report.sarif |
Callable; warns once |
fold scan --profile freestanding ... |
fold scan --preset freestanding ... |
Callable; warns once |
--null-deref-nullable-allocations |
--nullable-allocations |
Hidden, callable |
fold fuzz-prep ... |
fold fuzz prep ... |
Hidden, callable; warns once |
fold fuzz-run ... |
fold fuzz run ... |
Hidden, callable; warns once |
Bare fold scan --profile remains canonical for performance metrics. Native
finding JSON is --format findings-json; the deprecated json spelling means
SARIF and must not be used when native JSON is intended.
MCP migrations
Advertised schemas contain canonical argument names only. The call boundary
continues to accept these hidden aliases and returns a deprecations array with
alias, replacement, and removal-boundary fields:
| Deprecated argument | Canonical argument |
|---|---|
binary_path |
binary |
max_functions |
binary_max_functions |
null_deref_nullable_allocations |
nullable_allocations |
fold.scan with background: true |
fold.scan_start |
Providing a canonical argument and its alias together is rejected as ambiguous.
Hidden tool aliases remain callable and return structured deprecation
metadata:
| Deprecated tool | Canonical tool |
|---|---|
fold.get_job_findings |
fold.scan_job_findings |
fold.activate_scan_job |
fold.scan_activate |
fold.scan_project |
fold.scan |
fold.scan_rust |
fold.scan with mode: "rust" |
fold.scan_swift |
fold.scan with mode: "swift" |
fold.scan_binary |
fold.scan with mode: "binary" |
fold.find_duplicates |
fold.scan with clone/equivalence detectors |
fold.find_dead_code |
fold.scan with dead-code detectors |
fold.find_duplicate_classes |
fold.scan with class-dup detectors |
fold.find_security_issues |
fold.scan with source security detectors |
fold.find_binary_security_issues |
fold.scan with binary security detectors |