Screenshot evidenceBoth
edit and str_replace_editor returned bare unknown tool. Neither call reached filesystem execution.The call stopped here.
UNKNOWN_TOOLChoose by declared surface.
Read first, then use snake_case literal replacement arguments.
Only when the request actually declares the shipped Minimal tool.
Invoke the generated filesystem SDK inside one program.
The composition—not memory from another agent—defines the surface.
Names are not aliases.
edit ≠ str_replace_editor ≠ an OpenCode editor nameCapture the assembly proof.
exact version→Session preset→tool mode→resolved rows→request tool names
Then prove one disposable edit.
readobserve exact bytes→editreplace beta → gamma→readverify independentlyRoute the exact error.
unknown tool "edit"Assemblyonly run_code is callableMode collapseread before editingFreshnesssandbox deniedAuthoritySix release gates.
Request inventory is capturedPreset changes use a new SessionUnknown lookup touches no pathCode Mode carries a route hintRetries stop after a boundFinal bytes are independently verified
Primary evidence.
- rc.2 UNKNOWN_TOOL dispatch boundary
- rc.2 native edit registration
- rc.2 shipped Preset tool surfaces
- Unknown edit-tool report #4728
Keep the full diagnostic matrix.
The canonical guide adds recovery by Preset and mode, a disposable proof, failure routing, retry containment, and twenty regression gates.
Read and star on GitHub