Errors that say the fix
Errors that say the fix
A refusal under --format json now links the fix for its code, and vx docs <code> prints the same fix offline.
Every run is recorded. vx last replays its summary, vx last --failed finds the one that broke, and the answer ends with the command that re-runs it.
The terminal scrolled away, CI printed ten thousand lines, or an agent ran the build an hour ago. vx keeps a record of every run, so the question “what happened?” has an answer after the fact.
vx last$ vx lastrun 01a11e14-87de-749d-a6ba-eca7bb441469 — ok $ vx run build --all 2026-10-09T00:33:44.415Z · 62ms · master @ 64a144f9 4 tasks · 4 hits (1 up-to-date, 3 restored: 3 local, 0 remote)
restored-local @demo/ui#build 31ms 46046abb75e9c084 restored-local @demo/web#build 31ms b25e5bf41cb7a54d restored-local @demo/docs#build 31ms 1f858edb724ca91b up-to-date @demo/api#build 9ms 32b3a0bfa973a7a8The command, the branch and commit, the time, and every task with its outcome and cache key.
--failed skips to the newest run that failed, and ends with the
command that runs only what failed:
$ vx last --failedrun 01a11dab-5561-75fe-aa33-fd0fa220ad42 — FAILED $ vx run test --all 2026-10-08T22:38:50.209Z · 606ms · feat @ 5f0b0da6+dirty 8 tasks · 2 hits (2 up-to-date, 0 restored) · 1 failed
failed (exit 1) @demo/ui#test 4ms fb349347b8a40aeb 0.5× cpu success @demo/web#test 206ms 9b78e7e1a95c53db 0.0× cpu success @demo/docs#test 205ms 36a0120a08d6c9d9 0.0× cpu ...
re-run what failed: vx run @demo/ui#test$ vx last --listok 2026-10-09T00:33:44.415Z 01a11e14-87de 4 tasks · 4 hits (1 up-to-date, 3 restored: 3 local, 0 remote) 62ms $ vx run build --allFAILED 2026-10-08T22:38:50.209Z 01a11dab-5561 8 tasks · 2 hits (2 up-to-date, 0 restored) · 1 failed 606ms $ vx run test --allok 2026-10-08T22:38:41.669Z 01a11dab-3405 8 tasks · 2 hits (2 up-to-date, 0 restored) 912ms $ vx run test --all$ vx last --log app#testFAIL src/sum.test.ts > adds expected 4, received 5--log prints what one task printed in the last run that ran it. A
failure’s output is kept, and a cached task’s log is its cache entry,
so a task that passed reads too. Agents get the same through
vx mcp’s getTaskLog.
flowchart LR
RUN["vx run"] --> DB[("cache.db: runs")]
DB --> LAST["vx last"]
DB --> FAILED["vx last --failed"]
DB --> LIST["vx last --list"]
DB --> LOG["vx last --log"]
style FAILED stroke:#c6f84e,stroke-width:2px
The record lives in the workspace’s cache database, so it costs the run
nothing it was not already writing. --format json gives agents the
same answer as data.
Learn more: the CLI reference and vx last.