| github-token | GitHub token for API access (posting PR comments, auto-draft). Not required when post-comment is false and auto-draft-on-regression is false (token-less artifact-only mode). | no | ${{ github.token }} |
| results-path | Path to downloaded ASV results directory | no | — |
| comparison-text-file | Path to pre-computed comparison output file. When provided, skips running asv-spyglass entirely and uses this file as the raw output. | no | — |
| comparison-mode | Comparison mode: 'compare' for two-way (default) or 'compare-many' for multi-way baseline vs multiple contenders. | no | compare |
| baseline-sha | For compare-many mode: the baseline commit SHA. Used to find the baseline result file by SHA prefix. | no | — |
| contender-shas | For compare-many mode: comma-separated contender commit SHAs. Used to find contender result files by SHA prefix. | no | — |
| baseline-file | For compare-many mode: direct path to baseline result JSON file. Bypasses SHA-based lookup. Use this when comparing different environments that ran the same commit. | no | — |
| contender-files | For compare-many mode: comma-separated direct paths to contender result JSON files. Bypasses SHA-based lookup. Order must match contender-labels if both are provided. | no | — |
| baseline | YAML config for the baseline entry. Fields: label, sha, file, run-prefix (wrapper command, e.g. "pixi run -e bench"), setup (sourced before command, e.g. "source ./env.sh"), env, description. Execution: setup && run-prefix benchmark-command. | no | — |
| contenders | YAML list of contender objects for compare-many mode. Each object has: label (required), sha or file (one required for comparison), run-prefix (wrapper command), setup (sourced before command), env, description. When provided, overrides contender-files/ contender-shas/contender-labels. | no | — |
| benchmark-command | Default shell command to run benchmarks. Use {sha} as placeholder for the commit SHA (replaced in setup, run-prefix, and command). Each entry's run-prefix is prepended and setup is sourced before. Entries without a sha field skip benchmarking. | no | asv run --record-samples {sha}^! |
| init-command | Shell command to run once before any benchmarks. Use for one-time setup like 'asv machine --yes'. | no | — |
| preserve-paths | Comma-separated paths to preserve across git checkouts. When an entry has a sha, the action runs git checkout -f {sha} && git clean -fd automatically. These paths are stashed to /tmp before checkout and restored after. Example: 'benchmarks/, asv.conf.json'. | no | — |
| baseline-label | For compare-many mode: label for the baseline column. | no | — |
| contender-labels | For compare-many mode: comma-separated labels for each contender, matching the order of contender-shas (e.g. "opt-build,debug-build"). | no | — |
| asv-spyglass-args | Extra CLI flags passed through to asv-spyglass (e.g. --split, --only-changed, --only-regressed, --factor 1.2, --sort ratio). | no | — |
| base-sha | Base commit SHA (overrides metadata-file) | no | — |
| pr-sha | PR head commit SHA (overrides metadata-file) | no | — |
| base-file | Direct path to base result JSON file. Bypasses SHA-based file lookup. Useful when files are not named by SHA prefix. | no | — |
| pr-file | Direct path to PR result JSON file. Bypasses SHA-based file lookup. Useful when files are not named by SHA prefix. | no | — |
| metadata-file | Path to metadata.txt with main_sha=/base_sha= and pr_sha= lines. Alternative to explicit SHA inputs. | no | — |
| regression-threshold | Ratio above which a benchmark is a critical regression | no | 10 |
| auto-draft-on-regression | Convert PR to draft when critical regression detected | no | false |
| comment-marker | HTML comment marker for idempotent updates | no | <!-- asv-benchmark-result --> |
| label-before | Label for the base/before column | no | main |
| label-after | Label for the head/after column | no | pr |
| asv-spyglass-ref | Git ref for asv-spyglass install | no | main |
| runner-info | Runner name shown in details section | no | ubuntu-latest |
| dashboard-url | Link to ASV dashboard (optional) | no | — |
| env-diff | When true, parse baseline/contender ASV result JSON and append an "## Environment inventory" section (added/removed/version-bumped packages). Pure TypeScript -- does not require asv-spyglass for this feature. Cheap JSON parse; default true. Set false to skip. | no | true |
| post-comment | When true (default), create or update a PR comment with the comparison. Set false for token-less workflows that only need the markdown body (pair with upload-comment-artifact). | no | true |
| upload-comment-artifact | When true, write the comment markdown to comment-artifact-path and set comment-body-path / comment-artifact-name outputs. Pair with a follow-up actions/upload-artifact step so fork/PR jobs can skip pull-requests: write and hand the body to a trusted commenter. | no | false |
| comment-artifact-name | Artifact name when upload-comment-artifact is true | no | asv-perch-comment |
| comment-artifact-path | Filesystem path for the prepared comment markdown when upload-comment-artifact is true (also exposed as comment-body-path output). | no | asv-perch-comment.md |