pi-tool-duration
Append model-visible durations to slow Pi tool results
Package details
Install pi-tool-duration from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-tool-duration- Package
pi-tool-duration- Version
0.1.4- Published
- Jul 16, 2026
- Downloads
- 648/mo · 196/wk
- Author
- fitchmultz
- License
- MIT
- Types
- extension
- Size
- 7.6 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./extensions/tool-duration"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-tool-duration
Appends [duration: Xs] to slow Pi tool results so the model can tell when a tool actually took time.
hi
[duration: 5.0s]
Why
Pi already shows tool timing in the TUI (Took Xs), but that timing is UI-only. This extension adds the elapsed time to the model-visible tool result for slow calls.
How it works
The extension matches Pi tool_execution_start and tool_result events by toolCallId. When elapsed time is at or above the configured threshold, or a result reports a non-zero exit code, it appends one text block:
[duration: 5.0s]
Scope: Pi tools that emit tool_result events, including built-ins and extension tools. Direct ! / !! shell commands and RPC bash command messages are not tool results and are not annotated.
Install
pi install . # local, global settings
pi install -l --approve . # local, project settings
pi install npm:pi-tool-duration # after npm publish
Try without installing
From this repo:
pi -e .
# or
pi -e ./extensions/tool-duration/index.ts
Configure
Default threshold: 1000 ms.
PI_TOOL_DURATION_THRESHOLD_MS=0 pi -e . # annotate every tool result
pi -e . --tool-duration-threshold-ms 500 # annotate tools taking >= 500ms
Invalid threshold values fall back to the default.
Verify
In a session running the extension, ask Pi to use bash:
Use bash to run: sleep 5; echo hi
The model sees:
hi
[duration: 5.0s]
A fast successful command below the threshold stays unchanged. A non-zero exit code is always annotated, even below the threshold.
License
MIT