NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4705 most downloaded on PyPI
Build taskcluster taskgraphs
Last release 17 days ago
17 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
145 releases · first in 2021
One column per quarter.
Improve performance of Graph.transitive_closure() by @ahal in #1014
Full Changelog: 24.2.3...24.3.0
fix(deps): vendor latest robustcheckout by @ahal in #1012
Full Changelog: 24.2.2...24.2.3
fix: index cached tasks for PRs when tasks_for is github-pull-request by @ahal in #1009
Full Changelog: 24.2.1...24.2.2
github-pull-request tasks_forfix: don't run nested ProcessPoolExecutors by @bhearsum in #1008
Full Changelog: 24.2.0...24.2.1
chore(tests): Bump number of nodes during perf tests by @hneiva in #986
Full Changelog: 24.1.1...24.2.0
run-task VCS operations in the logINDEX_RANK env is cast to a string for index taskstaskgraph.create.create_tasksAccept-Encoding header in fetch-content scripttaskgraph <phase> --diffAdd comm repo handling for git as well in parameters.py by @lissyx in #984
feat: add support for custom context to task-context by @bhearsum in #971
Full Changelog: 24.0.0...24.1.0
fix: replace uses of Parameters.is_try() with level check by @ahal in #969
Full Changelog: 23.2.0...24.0.0
--allow-parameter-override if using try_task_configParameters.is_try() helper methodfeat: allow resolving keys in task context by @bhearsum in #968
Full Changelog: 23.1.0...23.2.0
task-context now calls resolve_keyed_by on substitution-fields (#968)chore(deps): bump the deps group with 3 updates by @dependabot [bot] in #943
Full Changelog: 23.0.0...23.1.0
.taskcluster.yml template for the d2g migrationTaskGraph.from_json now skips dependencies pointing at external taskIds (e.g. from replaced or cached tasks) when rebuilding edges, instead of producing edges to non-existent graph nodestaskcluster-client to work around an upstream issuefetch_graph_and_labels now handles HTTPError instances where response is NonePercent encode artifact names in fetch-content by @Eijebong in https://github.com/taskcluster/taskgraph/pull/927
taskgraph full -J --tasks <regex> shows all dependencies by @ahal in https://github.com/taskcluster/taskgraph/pull/928Full Changelog: https://github.com/taskcluster/taskgraph/compare/22.0.0...23.0.0
disabled_actions graph configuration to prevent specific actions from being generatedtaskgraph full -J --tasks <regex> now displays full dependencies instead of a filtered subsetfetch-content now percent-encodes artifact names, fixing downloads of artifacts containing spaces or other special charactersMove git notes fetching from run-task to the decision task and make them optional by @Eijebong in https://github.com/taskcluster/taskgraph/pull/935
Full Changelog: https://github.com/taskcluster/taskgraph/compare/21.0.0...22.0.0
refs/notes/decision-parameters itselfrun-task to fetch arbitrary extra refsBe stricter in index routes verifications by @Eijebong in https://github.com/taskcluster/taskgraph/pull/924
Full Changelog: https://github.com/taskcluster/taskgraph/compare/20.0.0...21.0.0
run-task to fetch arbitrary extra refschore: pre-commit autoupdate by @github-actions[bot] in https://github.com/taskcluster/taskgraph/pull/914
optionally_keyed_by("foo", dict, use_msgspec=True) by @ahal in https://github.com/taskcluster/taskgraph/pull/918Full Changelog: https://github.com/taskcluster/taskgraph/compare/19.2.1...20.0.0
hide-cmd-window featurePIP_REQUIREMENTS by run-task now end up in ~/.local/binoptionally_keyed_by with underlying dict using msgspecfix: loosen constraints on optionally_keyed_by for msgspec by @abhishekmadan30 in https://github.com/taskcluster/taskgraph/pull/904
Full Changelog: https://github.com/taskcluster/taskgraph/compare/19.2.0...19.2.1
optionally_keyed_by constraints for msgspec compatibilityfix: make nested struct fields optional to match voluptuous defaults by @abhishekmadan30 in https://github.com/taskcluster/taskgraph/pull/909
Full Changelog: https://github.com/taskcluster/taskgraph/compare/19.1.0...19.2.0
payload_builder wrapping for dict schemasci: add integration tests that run with lowest and highest dependency… by @ahal in https://github.com/taskcluster/taskgraph/pull/897
Full Changelog: https://github.com/taskcluster/taskgraph/compare/19.0.0...19.1.0
build-image now uses task ids__pycache__ directories when generating docker contextsUpdate taskcluster dependency by @jcristau in https://github.com/taskcluster/taskgraph/pull/889
extra in .taskcluster.yml template by @jcristau in https://github.com/taskcluster/taskgraph/pull/891Full Changelog: https://github.com/taskcluster/taskgraph/compare/18.1.0...19.0.0
LegacySchema.taskcluster.ymltaskcluster-proxy for Windows testsdocker_image transforms when creating docker-contexts directoryextra in .taskcluster.yml templateBatch task definition lookups in get_ancestors by @jcristau in https://github.com/taskcluster/taskgraph/pull/879
Full Changelog: https://github.com/taskcluster/taskgraph/compare/18.0.3...18.1.0
get_task_definitions Taskcluster utility functionfix Task object construction to have non-None {if,soft}_dependencies by @jcristau in https://github.com/taskcluster/taskgraph/pull/880
Full Changelog: https://github.com/taskcluster/taskgraph/compare/18.0.1...18.0.3
get_artifact_from_index now uses artifact_path instead of index_path
(bug 1999039); fixes regression introduced in 16.0.0load_tasks or from_json no longer have None as
if_dependencies/soft_dependencies attributesci: run unit tests on Windows by @bhearsum in https://github.com/taskcluster/taskgraph/pull/842
util.verify and the task transform by @Eijebong in https://github.com/taskcluster/taskgraph/pull/875Full Changelog: https://github.com/taskcluster/taskgraph/compare/18.0.0...18.0.1
util.verify and the task transform for
gecko's suffixed run-task-hg and run-task-git commandsrefactor!: remove support for hg sparse-profiles by @ahal in https://github.com/taskcluster/taskgraph/pull/862
taskgraph load-task by @ahal in https://github.com/taskcluster/taskgraph/pull/860Full Changelog: https://github.com/taskcluster/taskgraph/compare/17.3.0...18.0.0
--develop flag to taskgraph load-task to support making source changes in a taskrun-task no longer cleans up fetches dir (worker is already responsible for this)run-taskrun-taskfetch-content now uses PERFHERDER_FETCH_CONTENT_JSON_PATH for perf artifactrun-taskchore: pre-commit autoupdate by @github-actions[bot] in https://github.com/taskcluster/taskgraph/pull/854
Full Changelog: https://github.com/taskcluster/taskgraph/compare/17.2.1...17.3.0
taskgraph load-task -v host_path:container_pathload-task now takes run-task-{hg,git} into account when checking for run-taskcached_tasks transform and raise
an exception instead of it being an infinite loopfix: removing HTTP error checking. by @abhishekmadan30 in https://github.com/taskcluster/taskgraph/pull/831
run-task by @bhearsum in https://github.com/taskcluster/taskgraph/pull/850Full Changelog: https://github.com/taskcluster/taskgraph/compare/17.2.0...17.2.1
run-task script on Windowsrun-task script temporarily supports Python 3.8 againdependencies property in Task objectsfeat: add support for outputting a mermaid flowchart of the kind graph by @bhearsum in https://github.com/taskcluster/taskgraph/pull/834
git clean's error output by @jcristau in https://github.com/taskcluster/taskgraph/pull/833Full Changelog: https://github.com/taskcluster/taskgraph/compare/17.1.0...17.2.0
taskgraph kind-graph)get_taskcluster_client respects PRODUCTION_TASKCLUSTER_ROOT_URL againget_index_url, aligning it with get_artifact_urlgit clean's stderr to prevent trying to parse error messagesutil.taskcluster.get_artifactrun_task transform to not use the proxy to get script artifactsgenerator: add support for "graph_config" verifications by @jcristau in https://github.com/taskcluster/taskgraph/pull/802
Full Changelog: https://github.com/taskcluster/taskgraph/compare/17.0.0...17.1.0
fetch-content script for Gecko workaroundRemove base_ref and base_rev post-processing by @ahal in https://github.com/taskcluster/taskgraph/pull/813
links_and_reverse_links_dict by @Eijebong in https://github.com/taskcluster/taskgraph/pull/825links_and_reverse_links_dict in replace_tasks by @Eijebong in https://github.com/taskcluster/taskgraph/pull/824Full Changelog: https://github.com/taskcluster/taskgraph/compare/16.2.1...17.0.0
base_ref parameter no longer gets reset to default branch by Decision taskbase_rev parameter no longer gets reset to merge-base by Decision taskrun-task script no longer fetches or checks out base_ref parameterrun-task script no longer fetches all heads if head_ref was not specifiedrun-task now supports shallow Git clonesrepo.get_changed_files()retrigger-multiple action's schema definitionrun-task no longer fetches head ref twice in some scenariosrun-task avoids fetching tags in some scenarios when not necessaryrun-task properly normalizes head_ref before checking it outtaskcluster call sitesrun-task: wait on child processes when we're pid 1. by @jcristau in https://github.com/taskcluster/taskgraph/pull/810
list_artifacts to its correct behavior by @Eijebong in https://github.com/taskcluster/taskgraph/pull/811Full Changelog: https://github.com/taskcluster/taskgraph/compare/16.2.0...16.2.1
run-task script now cleans up zombie processestaskgraph.util.taskcluster.list_artifactstaskgraph.util.taskcluster.get_artifactfix: call listTasks properly by @jcristau in https://github.com/taskcluster/taskgraph/pull/796
Full Changelog: https://github.com/taskcluster/taskgraph/compare/16.1.1...16.2.0
perfherder-data-fetch-content.json artifact now available in production environmentlistTasks and list_task_group_incomplete_tasksget_artifact_urlhandle_artifactpurge_cacheRestore test coverage for find_task_id_batched and status_task_batched by @jcristau in https://github.com/taskcluster/taskgraph/pull/793
Full Changelog: https://github.com/taskcluster/taskgraph/compare/16.1.0...16.1.1
status_task_batched now works with paginationfind_task_id_batched and status_task_batchedchore: pre-commit autoupdate by @github-actions[bot] in https://github.com/taskcluster/taskgraph/pull/790
Full Changelog: https://github.com/taskcluster/taskgraph/compare/16.0.0...16.1.0
find_task_id_batched and status_task_batched now supports pagination for tasks pulled from the taskcluster packagefix: replaced taskcluster rest api calls with package by @abhishekmadan30 in https://github.com/taskcluster/taskgraph/pull/741
build-image and load-task commands by @ahal in https://github.com/taskcluster/taskgraph/pull/785Full Changelog: https://github.com/taskcluster/taskgraph/compare/15.4.0...16.0.0
-i/--interactive to pause task execution in load-taskutil/taskcluster.py now use the official Taskcluster Python clienttaskgraph load-tasktaskgraph load-tasktaskgraph load-task, including building them locallyload_tasks_for_kind utility function can now generate any graph stageload_tasks_for_kind utility function now forwards kwargs to TaskGraphGeneratortaskgraph build-image now supports images using $DOCKER_IMAGE_PARENTtaskgraph build-image now obtains necessary context automaticallytaskgraph build-image no longer accepts a --tag flagutil/taskcluster.py no longer accept the use_proxy argumentAdd ability to use custom images in taskgraph load-task by @ahal in https://github.com/taskcluster/taskgraph/pull/768
taskgraph load-task by @ahal in https://github.com/taskcluster/taskgraph/pull/768Full Changelog: https://github.com/taskcluster/taskgraph/compare/15.3.0...15.4.0
taskgraph load-task now supports an --image flag to use a different docker imageunique-kinds with fetches now works in from_deps transformsload_image_by_name function returns None instead of Falsepass along write_artifacts to loaders
write_artifacts to loaders (#779)openssh-client to the run-task and decision docker images (#777)Minor fixes for multiprocess kind processing
Process kinds in parallel on Linux with a pool of processes
Various taskgraph load-task fixes by @ahal in https://github.com/taskcluster/taskgraph/pull/767
taskgraph load-task fixes by @ahal in https://github.com/taskcluster/taskgraph/pull/767Full Changelog: https://github.com/taskcluster/taskgraph/compare/15.1.3...15.1.4
taskgraph load-task to support more types of tasksGraphConfig.vcs_root detection logicset continuation token correctly in status_task_batched
status_task_batched (#763)make task_context transforms really work without a task-context
task_context transforms really work without a task-context (#761)find_task_id_batched (#760)docs: add uv lock step to release instructions by @jcristau in https://github.com/taskcluster/taskgraph/pull/756
uv lock step to release instructions by @jcristau in https://github.com/taskcluster/taskgraph/pull/756Full Changelog: https://github.com/taskcluster/taskgraph/compare/15.1.0...15.1.1
task-context key no longer required for tasks using the task_context transformsFix parameter order for build_image/build_context in main by @Eijebong in https://github.com/taskcluster/taskgraph/pull/750
Full Changelog: https://github.com/taskcluster/taskgraph/compare/15.0.1...15.1.0
taskgraph.generator.load_tasks_for_kinds to get multiple kinds in one passos-groups generic-worker feature on linux and mac### Reverted - multiprocess kind processing
BREAKING CHANGE: Use primary-dependency-label attribute to find primary dependency of tasks
uv to check python version, when available(#733)primary-dependency-label attribute to find primary dependency of tasks (#736)docs: write a high level overview of Taskcluster and Taskgraph by @ahal in https://github.com/taskcluster/taskgraph/pull/737
Full Changelog: https://github.com/taskcluster/taskgraph/compare/14.6.0...14.6.1
load-task: quote the command passed to echo by @jcristau in https://github.com/taskcluster/taskgraph/pull/726
echo by @jcristau in https://github.com/taskcluster/taskgraph/pull/726Full Changelog: https://github.com/taskcluster/taskgraph/compare/14.5.0...14.6.0
--no-verify command line flag to disable verifications--rootGraphConfig.vcs_root no longer raises with a non-standard --roottaskgraph load-tasktaskgraph load-taskadd a more descriptive error when a kind cannot be found
/ in them (#722)hash_paths work when base_path is set (#723)Update file_url() handling of Thunderbird comm paths by @coreycb in https://github.com/taskcluster/taskgraph/pull/703
Full Changelog: https://github.com/taskcluster/taskgraph/compare/14.4.0...14.4.1
support lists in resolve_keyed_by
resolve_keyed_by (#608)feat(load-task): add a --user flag to specify which user to run as by @ahal in https://github.com/taskcluster/taskgraph/pull/685
Full Changelog: https://github.com/taskcluster/taskgraph/compare/14.2.1...14.3.0
load-task command now accepts a --user flag to run in container asorjson for faster json operations if availableThis fixes a regression for generic-worker tasks using run-task, introduced in 14.2.0.
This fixes a regression for generic-worker tasks using run-task, introduced in 14.2.0.
Full Changelog: https://github.com/taskcluster/taskgraph/compare/14.2.0...14.2.1
Let generic-worker verify run-task/fetch-content integrity by @jcristau in https://github.com/taskcluster/taskgraph/pull/666
Full Changelog: https://github.com/taskcluster/taskgraph/compare/14.1.1...14.2.0
ensure GraphConfig.root_dir is an absolute path
replace deprecated datetime.utcnow() with timezone-aware alternative
taskgraph action command to generate actions.json on the command line (#645)volume artifact type (#667)refactor!: revert {task_workdir} interpolation in run-task environment by @ahal in https://github.com/taskcluster/taskgraph/pull/648
Full Changelog: https://github.com/taskcluster/taskgraph/compare/13.1.0...14.0.0
run-task: silence python 3.12 deprecation warning by @jcristau in https://github.com/taskcluster/taskgraph/pull/639
run-task-as-current-user gw payload builder option by @matt-boris in https://github.com/taskcluster/taskgraph/pull/644Full Changelog: https://github.com/taskcluster/taskgraph/compare/13.0.0...13.1.0
runAsCurrentUser featureget_changed_files() utility with merge commits in Mercurialrun-task with Python 3.12BREAKING CHANGE get_ancestors now returns tasks keyed by taskid, to avoid missing tasks when multiple tasks exist with the same label in a graph
use-caches key (#623)get_ancestors now returns tasks keyed by taskid, to avoid missing tasks when multiple tasks exist with the same label in a graph (#633)cache-dotcache key (#623)fetch-content: support for downloading a single file and putting it in an archive
Full Changelog: https://github.com/taskcluster/taskgraph/compare/12.1.0...12.2.0
fetch-content: log x-cache-status when content size doesn't match expected
actions: look up action tasks by revision in fetch_graph_and_labels by @jcristau in https://github.com/taskcluster/taskgraph/pull/589
matrix transforms to facilitate splitting tasks by arbitrary values by @ahal in https://github.com/taskcluster/taskgraph/pull/588build- prefix from docker image task labels by @ahal in https://github.com/taskcluster/taskgraph/pull/585Full Changelog: https://github.com/taskcluster/taskgraph/compare/11.2.4...12.0.0
matrix transforms added to allow easily splitting tasks-p/--parameters flag now supports index=<index> as a means of discovering parameterstarget_tasks_method filter no longer implicitly added if other filters are usedwhen.files-changed optimization no longer implicitly adds unrelated tasks-from filesbuild-docker-image to docker-imagefix: ensure strip_components and add_prefix are respected in repack_archive by @nordzilla in https://github.com/taskcluster/taskgraph/pull/596
Full Changelog: https://github.com/taskcluster/taskgraph/compare/11.2.3...11.2.4
static-url fetches when using the strip_components or add_prefix featuresYour coding agent can read these notes before it upgrades. Set up the MCP server →