Command: diff


guild diff [OPTIONS] [RUN1 [RUN2]]

Diff two runs.

If RUN1 and RUN2 are omitted, the latest two filtered runs are diffed. See FILTERING topics below for details on filtering runs to diff.

If RUN1 or RUN2 is specified, both must be specified. An exception to this is when --working or --working-dir is specified, in which case RUN2 cannot be specified (see below).

Filter by Operation or Label

Runs may be filtered by operation using --operation. A run is only included if any part of its full operation name, including the package and model name, matches the value.

Use --label to only include runs with labels matching a specified value.

--operation and --label may be used multiple times to expand the runs that are included.

Use --unlabeled to only include runs without labels. This option may not be used with --label.

Use --marked to only include marked runs.

Filter by Run Status

Runs may also be filtered by specifying one or more status filters: --running, --completed, --error, and --terminated. These may be used together to include runs that match any of the filters. For example to only include runs that were either terminated or exited with an error, use --terminated --error, or the short form -ET.

Status filters are applied before RUN indexes are resolved. For example, a run index of 1 is the latest run that matches the status filters.

Filter by Run Start Time

Use --started to limit runs to those that have started within a specified time range.

IMPORTANT: You must quote RANGE values that contain spaces. For example, to filter runs started within the last hour, use the option:

--selected 'last hour'

You can specify a time range using several different forms:

last N minutes|hours|days
this week|month|year
last week|month|year
N days|weeks|months|years ago

DATETIME may be specified as a date in the format YY-MM-DD (the leading YY- may be omitted) or as a time in the format HH:MM (24 hour clock). A date and time may be specified together as DATE TIME.

When using between DATETIME and DATETIME, values for DATETIME may be specified in either order.

When specifying values like minutes and hours the training s may be omitted to improve readability. You may also use min instead of minutes and hr instead of hours.


after 7-1
after 9:00
between 1-1 and 4-30
between 10:00 and 15:00
last 30 min
last 6 hours
this week
last month
3 weeks ago

Filter by Source Code Digest

To show runs for a specific source code digest, use -g or --digest with a complete or partial digest value.

Diff Sourcecode

Use --soucecode to diff source code between two runs. Use --working to diff one run and its associated soure code working directory. The working directory is run’s Guild file sourcecode root directory. Use --working-dir to specify an alternative source code directory. Both --working and --working-dir imply --sourcecode. When either --working or --working-dir are used, RUN2 cannot also be specified.

Diff Command

By default the diff program is used to diff run details. An alternative default command may be specified in ~/.guild/config.yml using the command attribute of the diff section.

To use a specific diff program with the command, use --cmd.

Diff Remote Runs

To diff remote runs, use --remote. Note that any command specified by --cmd must be available on the remote and must show differences over standard output.

REMOTE is the name of a configured remote. Use guild remotes to list available remotes.

For information on configuring remotes, see guild remotes.


-O, --output Diff run output.
-s, --sourcecode Diff run source code.
-e, --env Diff run environment.
-f, --flags Diff run flags.
-a, --attrs Diff all run attributes; if specified other attribute options are ignored.
-d, --deps Diff run dependencies.
-p, --path PATH Diff specified path; may be used more than once.
-w, --working Diff run sourcecode to the associated working directory.
-W, --working-dir PATH Diff run sourcecode to the specified directory.
-c, --cmd CMD Command used to diff runs.
-o, --operation VAL Filter runs with operations matching VAL.
-l, --label VAL Filter runs with labels matching VAL.
-U, --unlabeled Filter only runs without labels.
-M, --marked Filter only marked runs.
-N, --unmarked Filter only unmarked runs.
-R, --running Filter only runs that are still running.
-C, --completed Filter only completed runs.
-E, --error Filter only runs that exited with an error.
-T, --terminated Filter only runs terminated by the user.
-P, --pending Filter only pending runs.
-G, --staged Filter only staged runs.
-S, --started RANGE Filter only runs started within RANGE. See above for valid time ranges.
-D, --digest VAL Filter only runs with a matching source code digest.
-r, --remote REMOTE Diff remote runs.
--help Show this message and exit.

Guild AI version 0.7.0.post1