Screenshot evidenceBoth edit and str_replace_editor returned bare unknown tool. Neither call reached filesystem execution.

The call stopped here.

01 · lookupTool registryUNKNOWN_TOOL
×
02 · policyApproval + guardsnot reached
×
03 · targetcwd + pathnot resolved
×
04 · effectFilesystemnot invoked

Choose by declared surface.

Standard · nativeedit

Read first, then use snake_case literal replacement arguments.

Minimalstr_replace_editor

Only when the request actually declares the shipped Minimal tool.

Coderun_code

Invoke the generated filesystem SDK inside one program.

Custominspect

The composition—not memory from another agent—defines the surface.

Names are not aliases.edit ≠ str_replace_editor ≠ an OpenCode editor name

Capture 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 independently

Route the exact error.

unknown tool "edit"Assembly
only run_code is callableMode collapse
read before editingFreshness
sandbox deniedAuthority

Six 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.

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