What's new
Unless a change is specific to one surface, changes listed here apply equally to the CLI and the corresponding MCP tools.
August 17, 2026 — get real coverage for a base commit
meticulous agent complete-base-run(new) replays the rest of a base run's selected sessions, to complete its coverage information.meticulous agent js-coveragenow refuses a base run whose selected set hasn't fully replayed, saying how many sessions are missing, rather than reporting an understated total.
meticulous agent complete-base-run
meticulous agent js-coverage
August 11, 2026 — discover available check IDs, and a renamed check command
meticulous agent test-run-checksis renamed tometiculous agent test-run-check, since it operates on a single check.- The new
--availableIdsflag (MCP:get_test_run_check_available_ids) lists the check IDs that have reported results for a test run.
meticulous agent test-run-check --availableIds --testRunId="<id>"
meticulous agent test-run-check --checkId="accessibility" --testRunId="<id>"
August 10, 2026 — agent diff reviews and review comment writes
meticulous agent reject-diffrecords a rejection with a review comment explaining why.meticulous agent ignore-diffsays a diff looks like an unrelated variant / flake, currently as a comment only.- The new
create-diff-commentandreply-to-diff-commentcommands let agents start and continue review threads independently of a decision. meticulous agent diff-commentsgained anisAgentAuthoredattribute, distinguishing agent-written comments from human ones.
meticulous agent reject-diff --replayDiffId="<id>" --screenshotName="<name>" --reason="..." --x=0.5 --y=0.5
meticulous agent reply-to-diff-comment --commentId="<id>" --text="..."
August 7, 2026 — non-visual check reports, session activity counts, and see and change which project you're querying
meticulous agent test-run-checksretrieves the Markdown report for a non-visual check. For customer-reported checks, use--checkType="custom".meticulous agent sessionsgained--includeNumberUserEventsand--includeNumberUrlsVisitedfor adding the recorded user-event and URL-visit counts to each session, and--includeDurationSecondsfor adding each session's duration in seconds (omitted for sessions where a duration couldn't be computed, e.g. recorded before this was tracked).- The MCP server gained
whoami,list_projects,get_projectandset_project, matching the existingmeticulous authcommands — so an agent can now check which project its calls resolve to, and change it, without leaving the connection.meticulous auth get-projectandset-projectalso gained--json. - Relatedly, an empty test-run or session lookup now names the project it searched and how to change it, rather than just reporting nothing found: a default project lives on your user account, so it is shared across machines and sessions and an unexpectedly empty result is usually the wrong project rather than missing data.
meticulous agent test-run-checks --checkId="accessibility"
meticulous agent test-run-checks --checkId="network-requests" --testRunId="<id>"
meticulous agent sessions --includeDurationSeconds
meticulous agent sessions --includeNumberUserEvents
meticulous agent sessions --includeNumberUrlsVisited
meticulous auth get-project --json
August 4, 2026 — filter and focus test-run diffs
meticulous agent test-run-diffs --onlyWithCommentsfilters to screenshot diffs with at least one open review comment.- The
--only*row filters now combine as a union, so passing several returns the diffs matching any of them. meticulous agent test-run-diffsreturns all diffs when there are at most five; above that, a selected representative subset in priority order. Full-diff results no longer include anisSelectedfield.--onlyRejected/--onlyWithCommentsare unaffected by this cap, they always return every matching diff.meticulous agent test-run-diffs --countsnow also reportsnumWithOpenComments.
August 3, 2026 — review comments, rejected diffs, and leaner test-run-diffs output
meticulous agent test-run-diffs --includeReviewsaddsdecision(previously--includeReviewDecisions) andopenCommentsto each diff.meticulous agent diff-comments --replayDiffId="<id>" --screenshotName="<name>"retrieves the corresponding open comments with nested replies.meticulous agent test-run-diffs --onlyRejectedreturns every screenshot diff already marked rejected, across every difference rather than only the selected subset.meticulous agent test-run-diffsno longer returnsindexoroutcome, and now returnsmismatchFractiononly with--includeMismatchFraction.
meticulous agent test-run-diffs --includeReviews
meticulous agent diff-comments --replayDiffId="<id>" --screenshotName="<name>"
meticulous agent test-run-diffs --onlyRejected
meticulous agent test-run-diffs --includeMismatchFraction
July 24, 2026 — submit feedback about Meticulous
meticulous agent submit-feedback(new) lets an agent send free-form feedback to the Meticulous team — whether Meticulous helped catch or debug a problem, what was confusing, and what information would have made the task easier. Optionally tag it with--outcome(helped/neutral/hindered), the related--testRunId, the--skillbeing followed, and--agentName/--agentModel.
meticulous agent submit-feedback --message="Caught a real regression in the checkout flow" --outcome="helped" --testRunId="<id>" --skill="meticulous-review"
July 21, 2026 — OAuth device flow login and project-level JS coverage
meticulous auth login --device(new) logs in via the OAuth 2.0 Device Authorization Grant: the CLI prints a URL and code you can open and confirm in a browser on any device, then polls until the grant is confirmed. Use this on remote or sandboxed machines (SSH sessions, containers, cloud coding agents) where a browser can't reach the CLI's localhost — unlike--non-interactive, which still requires opening the printed URL on the same machine as the CLI.meticulous agent js-coveragegained--latestForProject, which returns per-file coverage from the project's preferred latest successful test run.
July 20, 2026 — list a project's recently recorded sessions
meticulous agent sessions(new) lists a project's most recently created sessions, newest first — useful, for instance, for finding the id of a session you just recorded.meticulous agent trigger-test-rungained--maxDurationSeconds(ornonefor unlimited) to override the replay engine's duration cap on runs with pinned--sessionIds— useful, for instance, to prevent agent-recorded sessions from being cut at the default 5min cap.
meticulous agent sessions
meticulous agent sessions --createdSince="2026-07-01" --createdUntil="2026-07-10"
meticulous agent sessions --recordedBy="user@example.com" --visitedUrlFilter="*/checkout*"
meticulous agent sessions --recordedSince 2026-07-10 --excludeSyntheticSessions --limit 10
meticulous agent trigger-test-run --sessionIds="<id1>,<id2>" --maxDurationSeconds=none
July 16, 2026 — MCP server for agents
The Meticulous MCP server exposes the agent CLI's read and analysis commands as tools your coding agent can call directly — see the MCP server page for setup and the full list of available tools. Every read-only agent command has a matching tool; the two mutating ones, upload-build and trigger-test-run, aren't exposed yet but are coming soon.
July 13, 2026 — review-state aware test-run-diffs, diff counts, and per-account default project
meticulous agent test-run-diffsnow understands PR review state, and can report totals without the full list:Flag What it does --includeReviewDecisionsAdd a decisioncolumn with each diff's PR review decision (accepted/rejected/ignored/unreviewed;unreviewedwhen undecided or there's no PR)--onlyUnreviewedReturn only the diffs still awaiting review — everything left to look at, across every difference (implies --includeAllDiffs, so theisSelectedcolumn is included)--countsPrint just the aggregate totals — number of replays, number of differences, and the review-decision breakdown (approved / ignored / rejected / unreviewed) — instead of the per-diff list Your default project is now a per-account setting, too:
meticulous auth set-projectnow persists your default project on your Meticulous account instead of a local file — so it's consistent across machines and available to the MCP server.meticulous auth logoutleaves it untouched.meticulous auth get-project(new) prints your default project, which you can also view and change from your user settings in the web app.meticulous agent test-run-for-commit,test-run-diffs,js-coverage, andtrigger-test-rungained--project— a one-off override (id,organization/nameslug, or unique bare name) for that call only, which doesn't change your stored default.
meticulous auth set-project --project="my-org/my-project" meticulous auth get-project meticulous agent js-coverage --project="my-org/my-project"
July 10, 2026 — test-run-diffs is differences-only
meticulous agent test-run-diffs no longer returns matching screenshots — it reports only genuine visual differences, the same set Meticulous counts and displays everywhere else. The --includeMatches flag is removed.
July 7, 2026 — get combined coverage from multiple test runs
meticulous agent js-coverage gained --headPlusTestRunIds and --testRunIds for unioning coverage across several test runs (same project, same commit) — e.g. combining a run's head coverage with a separate run triggered via agent trigger-test-run --sessionIds="<ids>" to assess how these sessions improve coverage.
meticulous agent js-coverage --headPlusTestRunIds="<id1>,<id2>"
meticulous agent js-coverage --testRunIds="<id1>,<id2>,<id3>"
July 6, 2026 — consistent machine-readable output for agent & auth
agentandauthcommands gained--jsonfor JSON-structured output instead of default format.agentandauthcommands also gained--verbose, which prints additional progress logs on stderr.--rawJsonis renamed to--jsonArgs(old name still works, now deprecated).
meticulous agent js-coverage --json
meticulous auth whoami --json
July 1, 2026 — more coverage info, session pinning, and non-interactive login
meticulous agent js-coveragegained new flags for richer per-file coverage data:--includeExecutableRanges,--includeUncoveredRanges,--includeCoveragePercentage, and--prDiffOnly(test-run queries only), plus--includeAllFilesand--globFilter(also for replay and replay-diff queries).meticulous agent trigger-test-runcan now run with no arguments at all — it infers the already-uploaded deployment for your local HEAD commit.meticulous agent trigger-test-runnow accepts--sessionIds, a comma-separated list of session IDs to replay for both the base and the head, instead of the project's auto-selected golden set.meticulous agent trigger-test-runnow also accepts--commitShaas an alternative to--deploymentId, resolving to the most recently uploaded deployment for that commit — useful for re-triggering a run against a commit that has already gone through Meticulous.meticulous auth login --non-interactivelets the login flow run without a TTY: it prints the login URL instead of opening a browser.
meticulous agent js-coverage --includeCoveragePercentage --prDiffOnly
meticulous agent trigger-test-run
meticulous agent trigger-test-run --deploymentId="<id>" --baseSha="<base-sha>" --sessionIds="<id1>,<id2>"
meticulous agent trigger-test-run --commitSha="<sha>" --baseSha="<base-sha>"
meticulous auth login --non-interactive --project="my-org/my-project"
June 29, 2026 — separate build upload from triggering a test run
Two new agent commands, upload-build and trigger-test-run, give agents their own counterparts to the CI upload commands (ci upload-assets / ci upload-container) — and split building and uploading your app from kicking off a test run. You can now upload a build once, capture its deployment ID, and trigger one or more runs against it independently. Git options such as the commit SHA are resolved automatically from your local repository.
# Upload a static build (or a container image) and capture the deploymentId
meticulous agent upload-build --appDirectory="<path-to-build>"
meticulous agent upload-build --localImageTag="<image-tag>"
# Trigger a run against an uploaded build
meticulous agent trigger-test-run --deploymentId="<id>"
June 24, 2026 — smoother authentication and non-interactive project selection
Authentication is easier to drive from scripts and agents, and a stored login is no longer shadowed by a stale token.
- A logged-in OAuth session now takes precedence over a stale
METICULOUS_API_TOKENor~/.meticulous/config.jsontoken, so you won't get silently stuck on an expired credential. meticulous auth login(new) forces a fresh browser login and then selects a project.meticulous auth whoaminow also reports which credential is actually in use.meticulous auth logoutnow also clears the selected project, and warns if an environment-variable or config-file token will keep being used.meticulous auth list-projects(new) lists the projects you can access.- Argument
--project org/project(new) onlogin/set-projectlets you select a project non-interactively.
meticulous auth login --project="my-org/my-project"
meticulous auth list-projects
June 19, 2026 — richer, curated test-run-diffs output
By default, meticulous agent test-run-diffs now returns a curated, priority-ordered set of the most relevant visual differences as a single flat list. New flags let you control what comes back:
| Flag | What it does |
|---|---|
--includeDomDiffIds | Include DOM-diff IDs for each screenshot |
--includeAllDiffs | Return every diff, not just the curated set (adds an isSelected column) |
--includeMatches | Include matching and known-flaky screenshots too, not just differences (implies --includeAllDiffs) |
--orderByReplayDiffs | Order by replay then event index instead of priority |
Polling output is also quieter, and runs that can't produce diffs now fail fast with a clear message.
June 12, 2026 — JavaScript coverage and lookup by commit
New agent commands surface the JavaScript code coverage captured during replays, and let you resolve a test run straight from a commit — so an agent can go from local git context to the right run without tracking run IDs.
meticulous agent js-coverage # coverage for a test run (defaults to the current git HEAD)
meticulous agent js-coverage-diff # base-vs-head coverage diff for a replay diff
meticulous agent test-run-for-commit # the latest test run for the current commit