Every tool implements isConcurrencySafe(), isReadOnly(), isDestructive(), checkPermissions(), plus rendering methods. Fail-closed defaults. The StreamingToolExecutor starts tools while the API is still streaming.
When Bash errors, siblingAbortController.abort() cancels all parallel siblings instantly. The parent query continues — only siblings are killed. AbortController is a child of the main controller.
Fork: Cache-Optimized Parallelism
Forks inherit identical message history with placeholder tool results. Only the directive differs — shared prefix = prompt cache hit.