# Working trees and results (/docs/concepts)



A Run executes one command against your live working tree, so you do not need to commit first. Vanish always leaves credentials out of the snapshot, and by default skips common dependency installations and platform-specific caches.

A Run token identifies the filesystem changes a Run captured. Vanish stages results locally: `vanish results` lists them, and `vanish results apply TOKEN --dry-run` previews applying one. Pass `--apply` to apply a Run's results as it finishes, provided your working tree still matches what the Run started from.

Exit codes, signals and output come back as they would locally: `exit 42` returns 42, a command killed by SIGTERM returns 143, a command writing to a closed pipe returns 141, Ctrl-C returns 130, and each output stream arrives byte for byte. Three things differ: workers run Linux, each Run adds startup time, and stdout and stderr are not interleaved in the order they were written.

Processes do not survive between Runs. Files and captured environment changes carry over, but a database server started by an earlier command is not still running. Start the server and its client inside one Run.
