[{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/365050428","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/365050428/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/365050428/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.122.0","id":365050428,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Vwjo8","tag_name":"0.122.0","target_commitish":"7b898cbdb16205cb7f0e2994baa807d131eb2326","name":"0.122.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-08-04T17:45:20Z","updated_at":"2026-08-04T17:45:40Z","published_at":"2026-08-04T17:45:40Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.122.0","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.122.0","body":"## [0.122.0](https://github.com/promptfoo/promptfoo/compare/0.121.20...0.122.0) (2026-08-04)\n\n\n### ⚠ BREAKING CHANGES\n\n* drop Node.js 20 support ([#10260](https://github.com/promptfoo/promptfoo/issues/10260))\n\n### Bug Fixes\n\n* **deps:** keep the Shai-Hulud compromised versions unreachable ([#10301](https://github.com/promptfoo/promptfoo/issues/10301)) ([db2a066](https://github.com/promptfoo/promptfoo/commit/db2a0665648b49dde742c4d027bef92f221930f4))\n* **deps:** patch undici in code-scan-action and guard both lockfiles ([#10278](https://github.com/promptfoo/promptfoo/issues/10278)) ([15bf41f](https://github.com/promptfoo/promptfoo/commit/15bf41f2dcb7187fc6ed40cddea96b609b2610a9))\n* **deps:** pin socket.io-parser above the packet-decoder DoS ([#10279](https://github.com/promptfoo/promptfoo/issues/10279)) ([d0f2a83](https://github.com/promptfoo/promptfoo/commit/d0f2a83d8b72f3c0ad71950e2822d9350b7a48ed))\n* **deps:** repair Biome and undici upgrade regressions ([#10292](https://github.com/promptfoo/promptfoo/issues/10292)) ([3565a3c](https://github.com/promptfoo/promptfoo/commit/3565a3c1ffc16fd9f9a8d65ae93e4a6885c4b5c1))\n* **deps:** restore XML entity decoding for xlsx test files ([#10249](https://github.com/promptfoo/promptfoo/issues/10249)) ([00cdeb9](https://github.com/promptfoo/promptfoo/commit/00cdeb9a857ab019f61789b69ef75c3c852ce283))\n* **deps:** update anthropic packages ([#10234](https://github.com/promptfoo/promptfoo/issues/10234)) ([6279230](https://github.com/promptfoo/promptfoo/commit/6279230cae992d0ad4d6a823728b4a06d2553d73))\n* **deps:** update anthropic packages ([#10277](https://github.com/promptfoo/promptfoo/issues/10277)) ([f8609a6](https://github.com/promptfoo/promptfoo/commit/f8609a6b70a0c155f84c6921d111d3b30968e952))\n* **deps:** update dependency execa to v10 ([#10227](https://github.com/promptfoo/promptfoo/issues/10227)) ([bab74b8](https://github.com/promptfoo/promptfoo/commit/bab74b8623bb44182843de01b95890ae10c1cfcb))\n* **deps:** update opentelemetry ([#10290](https://github.com/promptfoo/promptfoo/issues/10290)) ([5638797](https://github.com/promptfoo/promptfoo/commit/5638797888b50e38ac263463ef2c7bd7d1ae2a6c))\n* **providers:** correct Nscale model identifiers ([#10259](https://github.com/promptfoo/promptfoo/issues/10259)) ([249b125](https://github.com/promptfoo/promptfoo/commit/249b125277d5c6fdeaaf610c253ddbbb1c460685))\n* **providers:** stop leaking Nscale provider settings into the request body ([#10258](https://github.com/promptfoo/promptfoo/issues/10258)) ([d23f86a](https://github.com/promptfoo/promptfoo/commit/d23f86a3907946f02c962a190e66edb0a642efe1))\n* **providers:** stop WebSocket evals from hanging when a stream stalls ([#10266](https://github.com/promptfoo/promptfoo/issues/10266)) ([60898c7](https://github.com/promptfoo/promptfoo/commit/60898c7faedbfa6bedf4832feffffcd5d6ecaef0))\n\n\n### Miscellaneous Chores\n\n* drop Node.js 20 support ([#10260](https://github.com/promptfoo/promptfoo/issues/10260)) ([26b725b](https://github.com/promptfoo/promptfoo/commit/26b725bd9496351ef269380c9fd83b9c2c338a0e))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/362840940","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/362840940/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/362840940/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.20","id":362840940,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4VoINs","tag_name":"0.121.20","target_commitish":"82ca3c24ec445cf1734face46042c187b659b954","name":"0.121.20","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-07-31T03:53:52Z","updated_at":"2026-07-31T03:54:07Z","published_at":"2026-07-31T03:54:07Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.20","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.20","body":"## [0.121.20](https://github.com/promptfoo/promptfoo/compare/0.121.19...0.121.20) (2026-07-30)\n\n\n### Features\n\n* **providers:** add Claude Opus 5 support ([#10210](https://github.com/promptfoo/promptfoo/issues/10210)) ([ff84f13](https://github.com/promptfoo/promptfoo/commit/ff84f13605c09cac0c3c591d9590622f864cc2f7))\n* **providers:** add current Azure, Claude, and Gemini models ([#10128](https://github.com/promptfoo/promptfoo/issues/10128)) ([5c216a1](https://github.com/promptfoo/promptfoo/commit/5c216a1bc33104bb507a9e57952b81a0fb27d06f))\n* **providers:** add Kimi K3 support to Moonshot provider ([#10132](https://github.com/promptfoo/promptfoo/issues/10132)) ([a1168b6](https://github.com/promptfoo/promptfoo/commit/a1168b62ef31a6c061f16ecdf2bfd76514e2a852))\n* **websocket:** support URL templating ([#10171](https://github.com/promptfoo/promptfoo/issues/10171)) ([a9aaced](https://github.com/promptfoo/promptfoo/commit/a9aacede5c3f84150d999bfbeadbbf39834370ea))\n\n\n### Bug Fixes\n\n* **assertions:** default conversation-relevance threshold to 0.5 ([#10142](https://github.com/promptfoo/promptfoo/issues/10142)) ([2812d76](https://github.com/promptfoo/promptfoo/commit/2812d7622b2e14f59753ac04e28b1ca63257263b))\n* **azure:** avoid crash on empty completion choices ([#10124](https://github.com/promptfoo/promptfoo/issues/10124)) ([17d8d03](https://github.com/promptfoo/promptfoo/commit/17d8d036420a63e4a9205084f096b82591b3b608))\n* **deps:** align Renovate npm registry ([#10115](https://github.com/promptfoo/promptfoo/issues/10115)) ([688a905](https://github.com/promptfoo/promptfoo/commit/688a90561180a6045ce3c8e8805d04bc23811bd7))\n* **deps:** update anthropic packages ([#10146](https://github.com/promptfoo/promptfoo/issues/10146)) ([cfa9bee](https://github.com/promptfoo/promptfoo/commit/cfa9bee146bd38fcabc1c4241ede8889fa95e302))\n* **deps:** update anthropic packages ([#10199](https://github.com/promptfoo/promptfoo/issues/10199)) ([2d3f3f1](https://github.com/promptfoo/promptfoo/commit/2d3f3f16154e04e3bbac8e672f90434fa85997ef))\n* **deps:** update anthropic packages ([#10229](https://github.com/promptfoo/promptfoo/issues/10229)) ([2834215](https://github.com/promptfoo/promptfoo/commit/28342153f2f5bdaaf30695f21ada70e311de421e))\n* **deps:** update dependency js-yaml to v5.2.2 [security] ([#10218](https://github.com/promptfoo/promptfoo/issues/10218)) ([18ea879](https://github.com/promptfoo/promptfoo/commit/18ea87909489b56e424513e5425ca13dcf702bd0))\n* **eval:** avoid prompt index collisions for duplicate providers ([#10208](https://github.com/promptfoo/promptfoo/issues/10208)) ([5aa0958](https://github.com/promptfoo/promptfoo/commit/5aa09586752c906763135ddb867b203b4ecd14e0))\n* **eval:** isolate conversation history by result column ([#10212](https://github.com/promptfoo/promptfoo/issues/10212)) ([a377bb7](https://github.com/promptfoo/promptfoo/commit/a377bb71d3e33b0e262a82a2eb3d36a05e371e29))\n* **integrations:** migrate Langfuse prompts to SDK v5 ([#10131](https://github.com/promptfoo/promptfoo/issues/10131)) ([08b3f50](https://github.com/promptfoo/promptfoo/commit/08b3f5084d5cd36e9187ac3c79e3fda03d6eefd7))\n* **providers:** align OpenAI models and capabilities ([#10125](https://github.com/promptfoo/promptfoo/issues/10125)) ([e17ce87](https://github.com/promptfoo/promptfoo/commit/e17ce87b380d7c5e807a622d86c859206e1e1ffb))\n* **providers:** preserve WebSocket retries for certificate-like URLs ([#10197](https://github.com/promptfoo/promptfoo/issues/10197)) ([85e0710](https://github.com/promptfoo/promptfoo/commit/85e07103ae7f47462d70e3e02154c1fafaeef2f1))\n* **providers:** reject Vertex Omni passthrough follow-ups ([#10135](https://github.com/promptfoo/promptfoo/issues/10135)) ([8482570](https://github.com/promptfoo/promptfoo/commit/84825702e935332e236426f29fb0dc99c3c162f8))\n* **providers:** restore secret-safe WebSocket retries ([#10176](https://github.com/promptfoo/promptfoo/issues/10176)) ([6d89cbb](https://github.com/promptfoo/promptfoo/commit/6d89cbbd609895fb31062a1fbbe94db8b08260f3))\n* **python:** keep worker control markers on their own line ([#10097](https://github.com/promptfoo/promptfoo/issues/10097)) ([6bc2b95](https://github.com/promptfoo/promptfoo/commit/6bc2b95da1c75ce81ff9047ae599af90222ac676))\n* **redteam:** harden risk reports and WebSocket timeout tests ([#10211](https://github.com/promptfoo/promptfoo/issues/10211)) ([9ab178e](https://github.com/promptfoo/promptfoo/commit/9ab178ec2772d72bacd533f2dc11ba66208606a5))\n* **redteam:** improve risk-category report row accessibility ([b163738](https://github.com/promptfoo/promptfoo/commit/b16373873b095ab5abb00dbd57fd10e864d3f6fe))\n* **redteam:** preserve generation provider selection ([#10133](https://github.com/promptfoo/promptfoo/issues/10133)) ([ac8971f](https://github.com/promptfoo/promptfoo/commit/ac8971fcfa961fa5fa96bcc4f527f5309b504997))\n* **site:** repair stale event pages, dead links, and hydration mismatches ([#10215](https://github.com/promptfoo/promptfoo/issues/10215)) ([b0e3c25](https://github.com/promptfoo/promptfoo/commit/b0e3c2567f504c30094b2d3863bcc51e916d0070))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/362840940/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":1,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/353929838","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/353929838/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/353929838/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.19","id":353929838,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4VGIpu","tag_name":"0.121.19","target_commitish":"1ede17aaed940e6dff04f71d24e4ecc011809dae","name":"0.121.19","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-07-14T16:33:12Z","updated_at":"2026-07-14T16:33:34Z","published_at":"2026-07-14T16:33:34Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.19","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.19","body":"## [0.121.19](https://github.com/promptfoo/promptfoo/compare/0.121.18...0.121.19) (2026-07-14)\n\n\n### Features\n\n* **providers:** add Bedrock GPT-5.6 frontier support ([#10081](https://github.com/promptfoo/promptfoo/issues/10081)) ([a97c8eb](https://github.com/promptfoo/promptfoo/commit/a97c8ebf1d005d035c75692c9aa1518a3b75a4b6))\n* **providers:** add Meta Model API (Muse Spark) provider ([#10041](https://github.com/promptfoo/promptfoo/issues/10041)) ([e6f06da](https://github.com/promptfoo/promptfoo/commit/e6f06da06093552eee2d09d0210fb3a960cf0304))\n* **providers:** add Open Interpreter provider ([#10079](https://github.com/promptfoo/promptfoo/issues/10079)) ([c4d9028](https://github.com/promptfoo/promptfoo/commit/c4d9028792fdfcbdc93350921f640cdeb1114c8d))\n* **providers:** add xAI Grok 4.5 support ([#10032](https://github.com/promptfoo/promptfoo/issues/10032)) ([83cedf0](https://github.com/promptfoo/promptfoo/commit/83cedf0f4cf096c3908d4abacae6dca511455d6f))\n* **providers:** honor CLAUDE_CONFIG_DIR for Claude Code creds ([#9980](https://github.com/promptfoo/promptfoo/issues/9980)) ([a643f8b](https://github.com/promptfoo/promptfoo/commit/a643f8b8e13a93e89f1da229e3b77db3927bdf55))\n* **providers:** support GPT-5.6 GA ([#10040](https://github.com/promptfoo/promptfoo/issues/10040)) ([3280625](https://github.com/promptfoo/promptfoo/commit/32806255bfb2685ea8e01a72bca8420746ba341c))\n* **redteam:** account for generation-phase token usage ([#9967](https://github.com/promptfoo/promptfoo/issues/9967)) ([e0d1698](https://github.com/promptfoo/promptfoo/commit/e0d16984a3d627c252a4f1dce4ae9b5ffdd250f6))\n* **redteam:** add goblin strategy ([#10057](https://github.com/promptfoo/promptfoo/issues/10057)) ([c0c86f1](https://github.com/promptfoo/promptfoo/commit/c0c86f1b2e9a94e7c3e60aa93deaad1e63fc6512))\n* **types:** optional token-usage fields on public types/schemas ([#9962](https://github.com/promptfoo/promptfoo/issues/9962)) ([7365c32](https://github.com/promptfoo/promptfoo/commit/7365c32c7acfc5fbd88c070ba38f4bdb91910bb4))\n* **util:** add token-usage helpers (error/generation accumulation) ([#9969](https://github.com/promptfoo/promptfoo/issues/9969)) ([79ebc2d](https://github.com/promptfoo/promptfoo/commit/79ebc2df50aaaeeba2f1c6add182351d6f0e0b73))\n\n\n### Bug Fixes\n\n* **assertions:** allow numeric 0 as contains/icontains value ([#10012](https://github.com/promptfoo/promptfoo/issues/10012)) ([06d8105](https://github.com/promptfoo/promptfoo/commit/06d8105dcaa27df9327dc30f9f77e5c53510ddf1))\n* **assertions:** return pass:false for tool calls missing a function object ([#10076](https://github.com/promptfoo/promptfoo/issues/10076)) ([ffd8922](https://github.com/promptfoo/promptfoo/commit/ffd8922926445671e2d62b2b4eb7f8dd8a97751a))\n* **azure:** avoid crash on empty choices array when reading logprobs ([#9867](https://github.com/promptfoo/promptfoo/issues/9867)) ([f189f84](https://github.com/promptfoo/promptfoo/commit/f189f84c344527635d76e478bcf9cd5508d963f7))\n* **code-scan:** harden action supply chain ([#9991](https://github.com/promptfoo/promptfoo/issues/9991)) ([17e90eb](https://github.com/promptfoo/promptfoo/commit/17e90eb9641f935aebb34663560fcee1b90c62bc))\n* **db:** protect user database from test runners ([#9590](https://github.com/promptfoo/promptfoo/issues/9590)) ([aabb699](https://github.com/promptfoo/promptfoo/commit/aabb69901b28b49eef8618ceb07b3a6d3dec4744))\n* **deps:** update anthropic packages ([#10037](https://github.com/promptfoo/promptfoo/issues/10037)) ([fed1d2a](https://github.com/promptfoo/promptfoo/commit/fed1d2accd8d6fffd2ceedaa6cf8ab7700290dcf))\n* **deps:** update anthropic packages ([#10066](https://github.com/promptfoo/promptfoo/issues/10066)) ([24a3ef1](https://github.com/promptfoo/promptfoo/commit/24a3ef1664de3431b3d00110b47ad509837649e4))\n* **deps:** update dependency js-yaml to v5.2.1 ([#10052](https://github.com/promptfoo/promptfoo/issues/10052)) ([fe22aa7](https://github.com/promptfoo/promptfoo/commit/fe22aa7a37b74b63987aa59b24dbfae4ee74f0b5))\n* **deps:** update opentelemetry ([#10067](https://github.com/promptfoo/promptfoo/issues/10067)) ([03e3f2a](https://github.com/promptfoo/promptfoo/commit/03e3f2a744c32da61c18a2f26d1b9adfca7dd705))\n* **eval:** combineFilterConditions doesn't recognize lowercase 'or' ([#10087](https://github.com/promptfoo/promptfoo/issues/10087)) ([25fedb6](https://github.com/promptfoo/promptfoo/commit/25fedb61c2168c5a86e45e59fd2a001a2a043cf4))\n* **matchers:** count missing faithfulness verdicts as unsupported ([#9984](https://github.com/promptfoo/promptfoo/issues/9984)) ([ce4a3d3](https://github.com/promptfoo/promptfoo/commit/ce4a3d38c24b3bd3af4b1d134a6962dd06ced2b3))\n* **matchers:** preserve reserved grader vars in model-graded matchers ([#10042](https://github.com/promptfoo/promptfoo/issues/10042)) ([9f6afcc](https://github.com/promptfoo/promptfoo/commit/9f6afcc9ab139f91f6e7991c77f282eb3aa38343))\n* **matchers:** preserve reserved rag grader vars ([#9994](https://github.com/promptfoo/promptfoo/issues/9994)) ([6e9e2ee](https://github.com/promptfoo/promptfoo/commit/6e9e2ee6471415deff58d6ed22fb5010ef4d10a1))\n* **providers:** address xAI response edge cases ([#10072](https://github.com/promptfoo/promptfoo/issues/10072)) ([0300eb0](https://github.com/promptfoo/promptfoo/commit/0300eb0fd11aec09cb5e93e51ae1e06c9460c959))\n* **providers:** avoid app-server config recursion ([#10078](https://github.com/promptfoo/promptfoo/issues/10078)) ([61a043f](https://github.com/promptfoo/promptfoo/commit/61a043f4e560a44fa78e0089e7df29d50939b7f7))\n* **providers:** bill GPT-5.6 image input tokens ([#10050](https://github.com/promptfoo/promptfoo/issues/10050)) ([ab52ee0](https://github.com/promptfoo/promptfoo/commit/ab52ee079c4558dad731a3165b0741cd64a34344))\n* **providers:** clamp DeepSeek cached tokens in cost calc ([#9908](https://github.com/promptfoo/promptfoo/issues/9908)) ([eca0cdc](https://github.com/promptfoo/promptfoo/commit/eca0cdc70b72a12e7421e55516407845ae621118))\n* **providers:** correct Codex SDK provider config handling ([#9963](https://github.com/promptfoo/promptfoo/issues/9963)) ([a311483](https://github.com/promptfoo/promptfoo/commit/a3114835a073fe14427d648fe11be094aae06fbe))\n* **providers:** guard array access in Bedrock Titan and Cohere output handlers ([#9897](https://github.com/promptfoo/promptfoo/issues/9897)) ([9a2aa85](https://github.com/promptfoo/promptfoo/commit/9a2aa85d13120a4d0aba6e064d3c88acd486a47c))\n* **providers:** handle TrueFoundry guardrail blocks ([#10021](https://github.com/promptfoo/promptfoo/issues/10021)) ([a9cfc86](https://github.com/promptfoo/promptfoo/commit/a9cfc86ad2dd7807e10e9858d961855c70fd705c))\n* **providers:** preserve TrueFoundry filter errors ([#10027](https://github.com/promptfoo/promptfoo/issues/10027)) ([051914a](https://github.com/promptfoo/promptfoo/commit/051914a620c26059befb0712ad23de87d30052c1))\n* **providers:** report cached request counts in token usage ([#9970](https://github.com/promptfoo/promptfoo/issues/9970)) ([2392ce3](https://github.com/promptfoo/promptfoo/commit/2392ce3b6e8b536d923cc245653a720dd62730bb))\n* **providers:** stringify simulated user provider outputs ([#10019](https://github.com/promptfoo/promptfoo/issues/10019)) ([46ee400](https://github.com/promptfoo/promptfoo/commit/46ee40056fa09c774ef4feedfdde3fb41c0d1afc))\n* **redteam:** add missing lowercase f to homoglyph map ([#10071](https://github.com/promptfoo/promptfoo/issues/10071)) ([fe3151e](https://github.com/promptfoo/promptfoo/commit/fe3151e86e6899309648588058d55ad99c74eb35))\n* **redteam:** clean up Hydra and Hex handling ([#10077](https://github.com/promptfoo/promptfoo/issues/10077)) ([ef61281](https://github.com/promptfoo/promptfoo/commit/ef61281e04ddd19490aaad50ac6f06d736494e6f))\n* **redteam:** encode hex strategy payloads as UTF-8 bytes ([#10073](https://github.com/promptfoo/promptfoo/issues/10073)) ([080dc99](https://github.com/promptfoo/promptfoo/commit/080dc9936cedd58aecbd16cb307c6c3c54e252f0))\n* **redteam:** match cross-session leaks case-insensitively ([#10074](https://github.com/promptfoo/promptfoo/issues/10074)) ([53d7586](https://github.com/promptfoo/promptfoo/commit/53d75866070c7fac6c1cb96711da7fbb8f9926cb))\n* **redteam:** pass target output to structured graders ([#10068](https://github.com/promptfoo/promptfoo/issues/10068)) ([c5f205d](https://github.com/promptfoo/promptfoo/commit/c5f205d4730c37942abf3b40f1284116c7b0ad72))\n* **redteam:** preserve punctuation in Pig Latin encoding ([#10025](https://github.com/promptfoo/promptfoo/issues/10025)) ([fe6bf3a](https://github.com/promptfoo/promptfoo/commit/fe6bf3a18a1f61194937c92d78dd097721ec73aa))\n* **redteam:** stop empty prompts at metadata boundaries ([#10015](https://github.com/promptfoo/promptfoo/issues/10015)) ([3957d90](https://github.com/promptfoo/promptfoo/commit/3957d9029fa87ef70ab7670da819c55004a41973))\n* **util:** handle even backslashes before slash comments ([#10030](https://github.com/promptfoo/promptfoo/issues/10030)) ([fd607d1](https://github.com/promptfoo/promptfoo/commit/fd607d1f00e41c7110d487ad8f20ba70f93686f0))\n* **util:** handle single-quoted escaped paths ([#10080](https://github.com/promptfoo/promptfoo/issues/10080)) ([01694e7](https://github.com/promptfoo/promptfoo/commit/01694e786edd16e7d5bf24594f5ec0497186888f))\n* **util:** remove unused NormalizedTokenUsage export ([#10065](https://github.com/promptfoo/promptfoo/issues/10065)) ([402a84d](https://github.com/promptfoo/promptfoo/commit/402a84d73d5317f046089256cf9b35cec38ae8db))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/350909869","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/350909869/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/350909869/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.18","id":350909869,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4U6nWt","tag_name":"0.121.18","target_commitish":"cb323b0fedb7704f40d8246168e45634b2e8f56d","name":"0.121.18","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-07-08T12:22:23Z","updated_at":"2026-07-08T12:22:39Z","published_at":"2026-07-08T12:22:39Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.18","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.18","body":"## [0.121.18](https://github.com/promptfoo/promptfoo/compare/0.121.17...0.121.18) (2026-07-07)\n\n\n### Features\n\n* add Node.js 20 support cutoff campaign ([#9862](https://github.com/promptfoo/promptfoo/issues/9862)) ([d4d35da](https://github.com/promptfoo/promptfoo/commit/d4d35da347358af9040c69e7e6003c7a9f0eac26))\n* add per-test repeat option ([#9781](https://github.com/promptfoo/promptfoo/issues/9781)) ([3e1f02b](https://github.com/promptfoo/promptfoo/commit/3e1f02bc192d26076e00bbe7133c340d95003308))\n* **app:** surface websocket subprotocols ([#9947](https://github.com/promptfoo/promptfoo/issues/9947)) ([88c7445](https://github.com/promptfoo/promptfoo/commit/88c7445fee7b0d611b48570e14f816c2d93c107c))\n* **config:** add YAML source location to prompt reference errors ([#9940](https://github.com/promptfoo/promptfoo/issues/9940)) ([5f13e76](https://github.com/promptfoo/promptfoo/commit/5f13e7672e730b5eb0033f4bac3c7f6228a1f647))\n* **providers:** add Bedrock support for Grok 4.3, GLM, MiniMax, Kimi, Nemotron, Gemma, Palmyra ([#9788](https://github.com/promptfoo/promptfoo/issues/9788)) ([84a274b](https://github.com/promptfoo/promptfoo/commit/84a274b5a5fa416065eb7ba3236b47b3de6e8799))\n* **providers:** add Claude Sonnet 5 support across Anthropic, Bedrock, Vertex, and Azure ([#9924](https://github.com/promptfoo/promptfoo/issues/9924)) ([3ea1e71](https://github.com/promptfoo/promptfoo/commit/3ea1e7130f3655f5764a366f845ca5f78821a104))\n* **providers:** add GPT-5.6 preview support ([#9893](https://github.com/promptfoo/promptfoo/issues/9893)) ([853710f](https://github.com/promptfoo/promptfoo/commit/853710faf786ff2f9ec90aea87dcec3373b3d950))\n* **providers:** add Moonshot (Kimi) provider ([#9672](https://github.com/promptfoo/promptfoo/issues/9672)) ([47c4def](https://github.com/promptfoo/promptfoo/commit/47c4def544fdab0b4efff8b7608689afb9a101b4))\n* **providers:** expand Google model support — Nano Banana 2 Lite, GA image aliases, gemini-pro-latest ([#9923](https://github.com/promptfoo/promptfoo/issues/9923)) ([87be4d5](https://github.com/promptfoo/promptfoo/commit/87be4d565415cf3871d16a633bb5b4e02d940db8))\n\n\n### Bug Fixes\n\n* address GitHub AI findings ([#9765](https://github.com/promptfoo/promptfoo/issues/9765)) ([fd8320a](https://github.com/promptfoo/promptfoo/commit/fd8320aa1e68e9f85f736b77eee9f86199ee5381))\n* **assertions:** let contains-sql extract fenced SQL with backtick identifiers ([#9785](https://github.com/promptfoo/promptfoo/issues/9785)) ([f97c932](https://github.com/promptfoo/promptfoo/commit/f97c932977de8c3da2da5ba42d76e545902fe198))\n* **assertions:** make is-xml reject non-well-formed XML ([#9782](https://github.com/promptfoo/promptfoo/issues/9782)) ([96929e8](https://github.com/promptfoo/promptfoo/commit/96929e8758cafb2bfdb0c5fbc5d7d0ea0971c162))\n* **assertions:** respect inverse for is-refusal when output is missing ([#9818](https://github.com/promptfoo/promptfoo/issues/9818)) ([59898f2](https://github.com/promptfoo/promptfoo/commit/59898f2a4722cb79daf13b3c328e4eab0d5a41e5))\n* **assertions:** stop is-sql false-rejecting SELECT DISTINCT ([#9784](https://github.com/promptfoo/promptfoo/issues/9784)) ([c08cfc4](https://github.com/promptfoo/promptfoo/commit/c08cfc454d38f052d0a86067eda0ed8ab15d45c7))\n* **bleu:** return pass:false for empty output instead of throwing ([#9841](https://github.com/promptfoo/promptfoo/issues/9841)) ([9e98c3e](https://github.com/promptfoo/promptfoo/commit/9e98c3ea8c7379adbad2e0da8f92cbf44578558b))\n* **ci:** re-pin code-scan Node to 24.15.0 to stop install timeout ([#9871](https://github.com/promptfoo/promptfoo/issues/9871)) ([8cc2cbb](https://github.com/promptfoo/promptfoo/commit/8cc2cbbf980791afb523ddbdb718071891ecbc89))\n* **cloud:** stop legacy API_HOST env var from steering cloud host resolution ([#9920](https://github.com/promptfoo/promptfoo/issues/9920)) ([49614da](https://github.com/promptfoo/promptfoo/commit/49614da0378ac56103466c5078fdbe39dd0bbb93))\n* **code-scan:** run GitHub Action on Node 24 runtime ([#9772](https://github.com/promptfoo/promptfoo/issues/9772)) ([c25974e](https://github.com/promptfoo/promptfoo/commit/c25974e8e74a5ba923c0318cb6576e2b4dfc9ad6))\n* **csv:** preserve quoted commas in contains-any/all assertion values ([#9761](https://github.com/promptfoo/promptfoo/issues/9761)) ([ae4a73a](https://github.com/promptfoo/promptfoo/commit/ae4a73ab57b2475fad3331e8fad4064f40702718))\n* **csv:** preserve zero __threshold in testCaseFromCsvRow ([#9768](https://github.com/promptfoo/promptfoo/issues/9768)) ([7e7f1ae](https://github.com/promptfoo/promptfoo/commit/7e7f1aec8d19cd8454445bcf67b90e307f01dce5))\n* **csv:** reject __expected0 instead of silently dropping its config ([#9815](https://github.com/promptfoo/promptfoo/issues/9815)) ([5097c23](https://github.com/promptfoo/promptfoo/commit/5097c2329dcb694ba6f8b8fbceb0d50612f703a9))\n* **deps:** bump pydantic-ai from 1.101.0 to 1.102.0 in /examples/integration-pydantic-ai in the pip group across 1 directory ([#9903](https://github.com/promptfoo/promptfoo/issues/9903)) ([1f2ac90](https://github.com/promptfoo/promptfoo/commit/1f2ac906f0db872070f31c255d324dceaf6f3e90))\n* **deps:** bump pypdf to 6.13.3 in eval-rag-full ([#9806](https://github.com/promptfoo/promptfoo/issues/9806)) ([a432a8d](https://github.com/promptfoo/promptfoo/commit/a432a8d05b7843ddef149c3e23cc2940ebb64a9f))\n* **deps:** override launch-editor to 2.14.1 ([#9883](https://github.com/promptfoo/promptfoo/issues/9883)) ([e96f32b](https://github.com/promptfoo/promptfoo/commit/e96f32b28eddb655f9905b1395e1c47aaaf687ae))\n* **deps:** require hono v4.12.25 ([#9777](https://github.com/promptfoo/promptfoo/issues/9777)) ([c5b397a](https://github.com/promptfoo/promptfoo/commit/c5b397aa0fb3097d7ef8f3aa0293f15296c4162f))\n* **deps:** resolve audit vulnerabilities ([#9880](https://github.com/promptfoo/promptfoo/issues/9880)) ([e55b37b](https://github.com/promptfoo/promptfoo/commit/e55b37bcde70ca9695e3ba38f21105be56a14ee8))\n* **deps:** restore LangChain examples ([#9778](https://github.com/promptfoo/promptfoo/issues/9778)) ([fb16af0](https://github.com/promptfoo/promptfoo/commit/fb16af0bfb2f14a3741871cdd3203f8058e39965))\n* **deps:** update anthropic packages ([#9817](https://github.com/promptfoo/promptfoo/issues/9817)) ([fe73e2e](https://github.com/promptfoo/promptfoo/commit/fe73e2e644186c40e6fd600ac2666ed5c43d0133))\n* **deps:** update anthropic packages ([#9831](https://github.com/promptfoo/promptfoo/issues/9831)) ([7f1cb4a](https://github.com/promptfoo/promptfoo/commit/7f1cb4ab356fa01a35d347dabf8114f9a4e97ee1))\n* **deps:** update anthropic packages ([#9904](https://github.com/promptfoo/promptfoo/issues/9904)) ([63c5a7a](https://github.com/promptfoo/promptfoo/commit/63c5a7a3a8e862aa14efc5fb7ee6e5217559b94e))\n* **deps:** update anthropic packages ([#9989](https://github.com/promptfoo/promptfoo/issues/9989)) ([25aa530](https://github.com/promptfoo/promptfoo/commit/25aa530e24c36b5f51ff7f9a2190189b9f5867ac))\n* **deps:** update anthropic packages to v0.102.0 ([#9776](https://github.com/promptfoo/promptfoo/issues/9776)) ([3e18ecb](https://github.com/promptfoo/promptfoo/commit/3e18ecb9dfafe49490c79df64d7e53f5e2a8ca0b))\n* **deps:** update dependency @anthropic-ai/sdk to v0.104.2 ([#9879](https://github.com/promptfoo/promptfoo/issues/9879)) ([81adada](https://github.com/promptfoo/promptfoo/commit/81adadadd2fd1bb19b80136ebe66c8c64102bc55))\n* **deps:** update dependency csv-parse to v7 ([#9870](https://github.com/promptfoo/promptfoo/issues/9870)) ([83f2ff6](https://github.com/promptfoo/promptfoo/commit/83f2ff6de7258480d7bdcde80a61673787bcf737))\n* **deps:** update dependency js-yaml to v5 ([#9919](https://github.com/promptfoo/promptfoo/issues/9919)) ([9696a2f](https://github.com/promptfoo/promptfoo/commit/9696a2fe5fdbff423aac3e35e349de047f5754fd))\n* **deps:** update dependency semver to v7.8.3 ([#9804](https://github.com/promptfoo/promptfoo/issues/9804)) ([7a6b199](https://github.com/promptfoo/promptfoo/commit/7a6b1999a70d689d39064ac13e98b69a749b5c34))\n* **deps:** update dependency swiper to v14 ([#10005](https://github.com/promptfoo/promptfoo/issues/10005)) ([e8a929a](https://github.com/promptfoo/promptfoo/commit/e8a929a11b36faded6396fbebfa7b64b21bc7257))\n* **deps:** update opentelemetry ([#9827](https://github.com/promptfoo/promptfoo/issues/9827)) ([f45c2e0](https://github.com/promptfoo/promptfoo/commit/f45c2e03d6a6398939929470d174517fcb25771a))\n* **deps:** update type definitions ([#9832](https://github.com/promptfoo/promptfoo/issues/9832)) ([f545c51](https://github.com/promptfoo/promptfoo/commit/f545c5164c6a45ce80bf2a73a013924f1a49f1c4))\n* **init:** promptfoo init will print undefined when initializing and selecting redteam as action ([#9899](https://github.com/promptfoo/promptfoo/issues/9899)) ([bfb2ad4](https://github.com/promptfoo/promptfoo/commit/bfb2ad4d233cc577e49160ea7eb82ee1e2d761f8))\n* **providers:** apply xAI cache-read discount to cost calculation ([#9783](https://github.com/promptfoo/promptfoo/issues/9783)) ([f273300](https://github.com/promptfoo/promptfoo/commit/f273300575fc73ea2d8312b76b4c438439208f55))\n* **providers:** Azure provider audit — cost reporting, token refresh, doc accuracy ([#9794](https://github.com/promptfoo/promptfoo/issues/9794)) ([7d304ee](https://github.com/promptfoo/promptfoo/commit/7d304ee20263b7686b4966dff683071a0f2c1871))\n* **providers:** correct Claude context pricing by platform ([#9995](https://github.com/promptfoo/promptfoo/issues/9995)) ([433d8f5](https://github.com/promptfoo/promptfoo/commit/433d8f5d6bdb767ab1e935a2a6ace00f74ab6bb7))\n* **providers:** correct Mistral alias pricing drift and refresh models/docs ([#9929](https://github.com/promptfoo/promptfoo/issues/9929)) ([ae04fcc](https://github.com/promptfoo/promptfoo/commit/ae04fcc0e8d9aa0307cd6d92501762aa961d9c45))\n* **providers:** correct stale model pricing ([#9951](https://github.com/promptfoo/promptfoo/issues/9951)) ([4e969db](https://github.com/promptfoo/promptfoo/commit/4e969db925570221cac4d8d371f1fba4e4b6f102))\n* **providers:** correct watsonx token usage (total omits prompt; completion miscomputed) ([#9780](https://github.com/promptfoo/promptfoo/issues/9780)) ([9056649](https://github.com/promptfoo/promptfoo/commit/9056649c9b1234998ab0f8289c219cb93ef16df2))\n* **providers:** flatten Moonshot config options ([#9803](https://github.com/promptfoo/promptfoo/issues/9803)) ([f0e87d9](https://github.com/promptfoo/promptfoo/commit/f0e87d96de40ebb9c5a20053dcf6fdba97bd6a55))\n* **providers:** support websocket subprotocols ([#9944](https://github.com/promptfoo/promptfoo/issues/9944)) ([ce40d66](https://github.com/promptfoo/promptfoo/commit/ce40d66492a4be614dee99574d083172db93e712))\n* **redteam:** remote materialize mcp tool calls ([#9935](https://github.com/promptfoo/promptfoo/issues/9935)) ([ede696e](https://github.com/promptfoo/promptfoo/commit/ede696e1905b2aa4469d259fe208edde645014cf))\n* **redteam:** stop presenting deprecated or invalid prompt-injection ids in tool guidance ([#9936](https://github.com/promptfoo/promptfoo/issues/9936)) ([9a337ab](https://github.com/promptfoo/promptfoo/commit/9a337ab3bc479b1bd7cb3a67c6fc00220390a703))\n* **redteam:** support Sharp 0.35 ([#9823](https://github.com/promptfoo/promptfoo/issues/9823)) ([92108f0](https://github.com/promptfoo/promptfoo/commit/92108f05ac925636895d175e4f345da166d27e9a))\n* restore Docker CLI links and validate rate-limit reset metadata ([#9790](https://github.com/promptfoo/promptfoo/issues/9790)) ([58e7c83](https://github.com/promptfoo/promptfoo/commit/58e7c8326867d470689f1f9978660c6f73e6f7c0))\n* **sanitizer:** redact malformed token params ([#9779](https://github.com/promptfoo/promptfoo/issues/9779)) ([ad1ad35](https://github.com/promptfoo/promptfoo/commit/ad1ad354f87da934d763d4c937376a678aa3551c))\n* **scheduler:** fall back from invalid retry-after-ms ([#9796](https://github.com/promptfoo/promptfoo/issues/9796)) ([81fe447](https://github.com/promptfoo/promptfoo/commit/81fe4479e722ae416b67e4e20fd5ba723dc91ff6))\n* **site:** declare js-yaml dependency so Cloudflare Pages build resolves v5 ([#9957](https://github.com/promptfoo/promptfoo/issues/9957)) ([65f0f4c](https://github.com/promptfoo/promptfoo/commit/65f0f4cd29c220388ceb16b5304850ce772073d8))\n* **testCaseReader:** preserve JSONL row description instead of overwriting ([#9840](https://github.com/promptfoo/promptfoo/issues/9840)) ([644e71b](https://github.com/promptfoo/promptfoo/commit/644e71b06be9efe2532fa43832a52b9ed71dd972))\n* **ui:** preserve WebSocket protocol input ([#10002](https://github.com/promptfoo/promptfoo/issues/10002)) ([ed192d3](https://github.com/promptfoo/promptfoo/commit/ed192d335be3bba23f10b1d0493548528d05cf0f))\n* **util:** keep ellipsize within maxLen when maxLen is below 3 ([#9822](https://github.com/promptfoo/promptfoo/issues/9822)) ([60939c0](https://github.com/promptfoo/promptfoo/commit/60939c0612d5a522354c50d09db86c8aff0a2345))\n* **util:** match JavaScript/TypeScript file extensions case-insensitively ([#9799](https://github.com/promptfoo/promptfoo/issues/9799)) ([9f18d92](https://github.com/promptfoo/promptfoo/commit/9f18d92cf99bf9a290276c917abc3987bf9d6bff))\n* **util:** report file and line for malformed JSON/JSONL test files ([#9942](https://github.com/promptfoo/promptfoo/issues/9942)) ([250af9d](https://github.com/promptfoo/promptfoo/commit/250af9d8a145bca136d2321751d2a6a28bdd56ea))\n* **util:** select xlsx sheet by name when name starts with digits ([#9932](https://github.com/promptfoo/promptfoo/issues/9932)) ([ede3302](https://github.com/promptfoo/promptfoo/commit/ede330200ede3ef6b15a3f45420bf11fd6616e50))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340291445","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340291445/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/340291445/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.17","id":340291445,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4USG91","tag_name":"0.121.17","target_commitish":"8be17c32d44b17f4ddbd618fcaca87769e674abc","name":"0.121.17","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-06-16T16:58:50Z","updated_at":"2026-06-16T16:59:17Z","published_at":"2026-06-16T16:59:17Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.17","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.17","body":"## [0.121.17](https://github.com/promptfoo/promptfoo/compare/0.121.16...0.121.17) (2026-06-16)\n\n\n### Bug Fixes\n\n* **docker:** bump pinned Python to 3.14 to match the Alpine base image ([#9769](https://github.com/promptfoo/promptfoo/issues/9769)) ([24fc5be](https://github.com/promptfoo/promptfoo/commit/24fc5be1ae645cbe6ecf0f06238ea6a360ad7866))\n* **docker:** unpin Python minor by default so Alpine drift can't break the build ([#9771](https://github.com/promptfoo/promptfoo/issues/9771)) ([c69ef40](https://github.com/promptfoo/promptfoo/commit/c69ef40c611c7b6b83b5e6118c7907e411f0d07b))\n* **matchers:** drop stranded list markers in RAGAS context-relevance segmentation ([#9767](https://github.com/promptfoo/promptfoo/issues/9767)) ([b06eb88](https://github.com/promptfoo/promptfoo/commit/b06eb885191ec47e7b5eada1d89c00d9d304949c))\n* **sanitizer:** stop over-redacting benign url values that mention a credential keyword ([#9764](https://github.com/promptfoo/promptfoo/issues/9764)) ([77abc5e](https://github.com/promptfoo/promptfoo/commit/77abc5e6131191128b4ecb3de41a6cceae5b0d65))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340232715","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340232715/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/340232715/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.16","id":340232715,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4UR4oL","tag_name":"0.121.16","target_commitish":"964f01f05bdfe08b212d7edd8fe7149d445d4479","name":"0.121.16","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-06-16T15:09:33Z","updated_at":"2026-06-16T15:09:58Z","published_at":"2026-06-16T15:09:58Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.16","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.16","body":"## [0.121.16](https://github.com/promptfoo/promptfoo/compare/0.121.15...0.121.16) (2026-06-16)\n\n\n### Features\n\n* **providers:** add Claude Fable and Mythos support ([#9671](https://github.com/promptfoo/promptfoo/issues/9671)) ([09435af](https://github.com/promptfoo/promptfoo/commit/09435af291d953e33e5e7f8813e37925a41a9f93))\n* **redteam:** publish all four promptfoo skills to the Claude Code marketplace ([#9665](https://github.com/promptfoo/promptfoo/issues/9665)) ([53a7266](https://github.com/promptfoo/promptfoo/commit/53a7266b1d206c787454f0cf00b348ce6fda54dc))\n\n\n### Bug Fixes\n\n* address AI quality findings ([#9637](https://github.com/promptfoo/promptfoo/issues/9637)) ([c54a306](https://github.com/promptfoo/promptfoo/commit/c54a30668ad8319d76c20ae96e6680ad6c51a2c6))\n* **assertions:** correct BLEU brevity penalty formula ([#9717](https://github.com/promptfoo/promptfoo/issues/9717)) ([2a97af6](https://github.com/promptfoo/promptfoo/commit/2a97af6c3e25e6f7b6a6849d025c22ffbdb00963))\n* **assertions:** honor a test/assert-set threshold of 0 ([#9736](https://github.com/promptfoo/promptfoo/issues/9736)) ([2547025](https://github.com/promptfoo/promptfoo/commit/2547025aad8ce1bec79bf24f4c20ef9c0432608c))\n* **assertions:** honor inverse (not-) for cost, latency, and perplexity ([#9725](https://github.com/promptfoo/promptfoo/issues/9725)) ([1c9daa0](https://github.com/promptfoo/promptfoo/commit/1c9daa092725c663d1797aef02ea6d590a878459))\n* **assertions:** honor inverse (not-) for levenshtein assertion ([#9722](https://github.com/promptfoo/promptfoo/issues/9722)) ([560ea2d](https://github.com/promptfoo/promptfoo/commit/560ea2d236e7d926f8a3443fb93d833b1b537bb4))\n* **assertions:** honor inverse for not-moderation ([#9738](https://github.com/promptfoo/promptfoo/issues/9738)) ([c56c712](https://github.com/promptfoo/promptfoo/commit/c56c7121749ac9fcdb29e6892c806900f8cf9568))\n* **assertions:** make BLEU closest-reference tie-break order-independent ([#9718](https://github.com/promptfoo/promptfoo/issues/9718)) ([051fbf9](https://github.com/promptfoo/promptfoo/commit/051fbf95bc3a460c79c5d2252a73484f16b65f12))\n* **assertions:** make not-similar with an array require dissimilarity to all values ([#9737](https://github.com/promptfoo/promptfoo/issues/9737)) ([6c3e7bb](https://github.com/promptfoo/promptfoo/commit/6c3e7bb161cccfc9040b363bc5a77ddfcbabf852))\n* **assertions:** report best similarity score when no array value passes ([#9721](https://github.com/promptfoo/promptfoo/issues/9721)) ([94eaaf3](https://github.com/promptfoo/promptfoo/commit/94eaaf315b73de52d82e2820b9b5dd7a6dd1c993))\n* **assertions:** respect inverse when an object value can't parse output as JSON ([#9626](https://github.com/promptfoo/promptfoo/issues/9626)) ([052a4e1](https://github.com/promptfoo/promptfoo/commit/052a4e1e3ebf62818243cac3cdd6987546dcc052))\n* **assertions:** score ROUGE case-insensitively ([#9739](https://github.com/promptfoo/promptfoo/issues/9739)) ([386c012](https://github.com/promptfoo/promptfoo/commit/386c0129bf5099963e5f8afb773f56d92441417b))\n* **assertions:** stop BLEU collapsing scores for short candidates ([#9740](https://github.com/promptfoo/promptfoo/issues/9740)) ([ec0e225](https://github.com/promptfoo/promptfoo/commit/ec0e2250d42a93e89441b023a09042345568b96d))\n* **build:** make biome Style Check run deterministically (fix stack-overflow no-op) + fix unmasked lint errors ([#9631](https://github.com/promptfoo/promptfoo/issues/9631)) ([836733f](https://github.com/promptfoo/promptfoo/commit/836733ff89e1388b3193b31d308b858eadc72bc4))\n* **ci:** update architecture edge baseline for evalTableUtils CSV imports ([#9633](https://github.com/promptfoo/promptfoo/issues/9633)) ([ea3348e](https://github.com/promptfoo/promptfoo/commit/ea3348e3d1ff72fd7dabb02787b709561a41068f))\n* **cli:** accept falsy provider outputs in validation ([#9644](https://github.com/promptfoo/promptfoo/issues/9644)) ([c5e4b80](https://github.com/promptfoo/promptfoo/commit/c5e4b80a4803f554a7d78ca23b6d821c1fc10841))\n* **code-scan:** keep SARIF skip errors off stdout ([#9690](https://github.com/promptfoo/promptfoo/issues/9690)) ([e1e062d](https://github.com/promptfoo/promptfoo/commit/e1e062db849a320f934a94210ea9400720fdbdf5))\n* **code-scan:** restore log level after structured scans ([#9196](https://github.com/promptfoo/promptfoo/issues/9196)) ([ca4821c](https://github.com/promptfoo/promptfoo/commit/ca4821c8e3f3e428a50678d774bf5a30eaa328f4))\n* **codex:** propagate trace identity to CLI telemetry ([#9703](https://github.com/promptfoo/promptfoo/issues/9703)) ([29db0a8](https://github.com/promptfoo/promptfoo/commit/29db0a829571fb7df2b87c601da49efa7b1d6d98))\n* **csv:** unescape all escaped commas in array metadata values ([#9757](https://github.com/promptfoo/promptfoo/issues/9757)) ([9ef75a2](https://github.com/promptfoo/promptfoo/commit/9ef75a257907049973ce062ce181697013c0e11b))\n* **deps:** constrain undici to &lt;7.27.1 to fix Node 26 \"terminated\" error ([#9668](https://github.com/promptfoo/promptfoo/issues/9668)) ([2774371](https://github.com/promptfoo/promptfoo/commit/2774371660c7fc92eaac6891e4b8152a30940399))\n* **deps:** gate Content-Encoding strip after decompress and require undici &gt;=7.27.1 &lt;8 ([#9683](https://github.com/promptfoo/promptfoo/issues/9683)) ([d6031dc](https://github.com/promptfoo/promptfoo/commit/d6031dc65da5df55db034026ec7bbe3a74f1c2ce))\n* **deps:** pin undici to 7.27.1 ([#9711](https://github.com/promptfoo/promptfoo/issues/9711)) ([67ae571](https://github.com/promptfoo/promptfoo/commit/67ae57163dc49491ecb1ea983162fdddf1336c13))\n* **deps:** update anthropic packages ([#9634](https://github.com/promptfoo/promptfoo/issues/9634)) ([d932250](https://github.com/promptfoo/promptfoo/commit/d932250ac0d40abf59a0540ed2d860e01a046e8c))\n* **deps:** update anthropic packages ([#9651](https://github.com/promptfoo/promptfoo/issues/9651)) ([4fcaa87](https://github.com/promptfoo/promptfoo/commit/4fcaa87067fefd4279a597cceb03dc3834fc5924))\n* **deps:** update anthropic packages ([#9733](https://github.com/promptfoo/promptfoo/issues/9733)) ([b320a7b](https://github.com/promptfoo/promptfoo/commit/b320a7bc56039f5def46110cd6a161a03d8bbd8b))\n* **deps:** update dependency @opentelemetry/core to v2.8.0 [security] ([#9754](https://github.com/promptfoo/promptfoo/issues/9754)) ([fd11498](https://github.com/promptfoo/promptfoo/commit/fd11498db6c3ce71249fe1320071dc16b79296fc))\n* **eval:** escape CSV formula injection in result exports ([#9609](https://github.com/promptfoo/promptfoo/issues/9609)) ([c039bff](https://github.com/promptfoo/promptfoo/commit/c039bffb23fcc4bb36d5fe38daea119f8cd30645))\n* **eval:** handle config directory inputs without promptfooconfig ([#7825](https://github.com/promptfoo/promptfoo/issues/7825)) ([30dc14b](https://github.com/promptfoo/promptfoo/commit/30dc14bca9c38b8a927283f53b897e246785882a))\n* **eval:** restore CSV export architecture boundary ([#9630](https://github.com/promptfoo/promptfoo/issues/9630)) ([7aaa3ed](https://github.com/promptfoo/promptfoo/commit/7aaa3ed9e8c917411808aa351190e13f33d1bef5))\n* honor remote data-sharing controls ([#9664](https://github.com/promptfoo/promptfoo/issues/9664)) ([49a175a](https://github.com/promptfoo/promptfoo/commit/49a175a877b828893f2a9e03420816d192cdbb5f))\n* **http:** redact transformed request debug logs ([#9425](https://github.com/promptfoo/promptfoo/issues/9425)) ([4190a3c](https://github.com/promptfoo/promptfoo/commit/4190a3c630e0c41396ed5750a1b4fb9c203e4557))\n* **matchers:** respect filtered remote target context ([#9704](https://github.com/promptfoo/promptfoo/issues/9704)) ([86ec3ab](https://github.com/promptfoo/promptfoo/commit/86ec3ab863514a6932f1f5d057f133406a5f35ed))\n* **matchers:** segment prose context into sentences for RAGAS context relevance ([#9734](https://github.com/promptfoo/promptfoo/issues/9734)) ([ca75779](https://github.com/promptfoo/promptfoo/commit/ca757794c53c48422d9c20c133e5d1704e5adff0))\n* **output:** wait for JSONL file release ([#9618](https://github.com/promptfoo/promptfoo/issues/9618)) ([9d46d14](https://github.com/promptfoo/promptfoo/commit/9d46d141dc60031073c971f8891c825d1a854832))\n* preserve prompt function across beforeAll extension hooks ([#9661](https://github.com/promptfoo/promptfoo/issues/9661)) ([d984059](https://github.com/promptfoo/promptfoo/commit/d9840593addb070b31504fec2db332e01c320bc6))\n* **providers:** preserve Anthropic thinking token usage ([#9680](https://github.com/promptfoo/promptfoo/issues/9680)) ([6b41b43](https://github.com/promptfoo/promptfoo/commit/6b41b4332f79f89a7647293bd8e41c2d383ee4de))\n* **providers:** respect originator header overrides ([#9585](https://github.com/promptfoo/promptfoo/issues/9585)) ([c9fe77f](https://github.com/promptfoo/promptfoo/commit/c9fe77fbb88920ec13845e1529c553ea53982894))\n* **redteam:** allow token plugins with multi-input ([#9657](https://github.com/promptfoo/promptfoo/issues/9657)) ([03f888f](https://github.com/promptfoo/promptfoo/commit/03f888fd81b47ae273d194054b346c312de90214))\n* **redteam:** make skill commands and script paths work for marketplace users ([#9670](https://github.com/promptfoo/promptfoo/issues/9670)) ([aba48e4](https://github.com/promptfoo/promptfoo/commit/aba48e4cdef5b37fd7816ff7dd4ac42a442e1238))\n* **redteam:** preserve team context in cloud tasks ([#9677](https://github.com/promptfoo/promptfoo/issues/9677)) ([a7bac57](https://github.com/promptfoo/promptfoo/commit/a7bac57018ea354b7249ec595901235a50b187f5))\n* **redteam:** publish marketplace skill fixes ([#9676](https://github.com/promptfoo/promptfoo/issues/9676)) ([3c761c5](https://github.com/promptfoo/promptfoo/commit/3c761c5d32b806fda229379a8937e50b1c05bb77))\n* **redteam:** surface remote generation body read failures ([#9751](https://github.com/promptfoo/promptfoo/issues/9751)) ([8a1bec2](https://github.com/promptfoo/promptfoo/commit/8a1bec20745707fe9bf7bf0e75145cbfede37932))\n* **share:** preserve blob refs per result row ([#9749](https://github.com/promptfoo/promptfoo/issues/9749)) ([e029151](https://github.com/promptfoo/promptfoo/commit/e029151eb65ee64d3dcff1d0d79099e7ada35e33))\n* **webui:** redact test filter provider credentials ([#9529](https://github.com/promptfoo/promptfoo/issues/9529)) ([5d809ef](https://github.com/promptfoo/promptfoo/commit/5d809ef283c9117e317883472d9e74f6f7e20b03))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340315625","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340315625/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/340315625/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/code-scan-action-0.1.8","id":340315625,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4USM3p","tag_name":"code-scan-action-0.1.8","target_commitish":"af7ec0b5f1072685a919015faf5799cc0886d71e","name":"code-scan-action: 0.1.8","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-06-16T17:45:57Z","updated_at":"2026-06-16T17:46:14Z","published_at":"2026-06-16T17:46:14Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/code-scan-action-0.1.8","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/code-scan-action-0.1.8","body":"## [0.1.8](https://github.com/promptfoo/promptfoo/compare/code-scan-action-0.1.7...code-scan-action-0.1.8) (2026-06-16)\n\n\n### Bug Fixes\n\n* **code-scan:** process findings in mixed skip responses ([#9525](https://github.com/promptfoo/promptfoo/issues/9525)) ([aeae790](https://github.com/promptfoo/promptfoo/commit/aeae7904701f861a0a7ce8bfcdd16f67e74deec3))\n* **code-scan:** run GitHub Action on Node 24 runtime ([#9772](https://github.com/promptfoo/promptfoo/issues/9772)) ([c25974e](https://github.com/promptfoo/promptfoo/commit/c25974e8e74a5ba923c0318cb6576e2b4dfc9ad6))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/340315625/reactions","total_count":2,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/334973751","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/334973751/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/334973751/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.15","id":334973751,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4T90s3","tag_name":"0.121.15","target_commitish":"4805856060d026521794d4e69decb938155580ad","name":"0.121.15","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-06-05T14:20:57Z","updated_at":"2026-06-05T14:21:17Z","published_at":"2026-06-05T14:21:17Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.15","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.15","body":"## [0.121.15](https://github.com/promptfoo/promptfoo/compare/0.121.14...0.121.15) (2026-06-05)\n\n\n### Features\n\n* **assertions:** grade multimodal outputs ([#9617](https://github.com/promptfoo/promptfoo/issues/9617)) ([ec4d3b4](https://github.com/promptfoo/promptfoo/commit/ec4d3b42e29133e0479028d38de394b949c9c092))\n* **build:** add DAG-aware architecture cycle checks ([#9557](https://github.com/promptfoo/promptfoo/issues/9557)) ([9d7d810](https://github.com/promptfoo/promptfoo/commit/9d7d810c2118c63cb537bf05ea2d34c12bd22066))\n* **providers:** add Azure MAI image provider and MAI model recognition ([#9595](https://github.com/promptfoo/promptfoo/issues/9595)) ([e091527](https://github.com/promptfoo/promptfoo/commit/e091527e2eae0539b9b6d78abb462eddc15e093d))\n* **providers:** upgrade MiniMax default model to M3 ([#9598](https://github.com/promptfoo/promptfoo/issues/9598)) ([43b30c5](https://github.com/promptfoo/promptfoo/commit/43b30c5bc50368842ecd08432edc2e37543db5a2))\n\n\n### Bug Fixes\n\n* **auth:** enable auto-share for on-prem Report Server after login ([#9612](https://github.com/promptfoo/promptfoo/issues/9612)) ([8ece593](https://github.com/promptfoo/promptfoo/commit/8ece593840d8dba3f5d2e1e05f55116ec1a92c30))\n* **auth:** preserve cloud request headers ([#9610](https://github.com/promptfoo/promptfoo/issues/9610)) ([3a2c5e6](https://github.com/promptfoo/promptfoo/commit/3a2c5e64796b3852381b6168ad2da735f3161c1d))\n* **code-scan:** process findings in mixed skip responses ([#9525](https://github.com/promptfoo/promptfoo/issues/9525)) ([aeae790](https://github.com/promptfoo/promptfoo/commit/aeae7904701f861a0a7ce8bfcdd16f67e74deec3))\n* **code-scan:** reject fractional inline comment lines ([#9556](https://github.com/promptfoo/promptfoo/issues/9556)) ([0a2b329](https://github.com/promptfoo/promptfoo/commit/0a2b32997dd83033e218cf523562b69cebc88527))\n* **eval:** compose metadata and result filters ([#9604](https://github.com/promptfoo/promptfoo/issues/9604)) ([49539ee](https://github.com/promptfoo/promptfoo/commit/49539ee61786540a77bcb9765f23cb8a2c4e1828))\n* **eval:** preserve --config ordering when expanding a directory entry ([#9606](https://github.com/promptfoo/promptfoo/issues/9606)) ([fc081a0](https://github.com/promptfoo/promptfoo/commit/fc081a0bbaa91c27b93bdd4c28533f5912023deb))\n* harden validation and target discovery ([#9614](https://github.com/promptfoo/promptfoo/issues/9614)) ([465d610](https://github.com/promptfoo/promptfoo/commit/465d610aade97837ed5bf731d54c3b2389e92819))\n* **providers:** require deployment name for no-default Azure provider types ([#9603](https://github.com/promptfoo/promptfoo/issues/9603)) ([da48abd](https://github.com/promptfoo/promptfoo/commit/da48abd6bc1b92e44acd5d4c88a0a02058721b3b))\n* **providers:** suppress optional GCP metadata warning ([#9554](https://github.com/promptfoo/promptfoo/issues/9554)) ([8dcc44b](https://github.com/promptfoo/promptfoo/commit/8dcc44bd2b2278db047363545566917cb1566975))\n* **redteam:** restrict remote auth to cloud host ([#9597](https://github.com/promptfoo/promptfoo/issues/9597)) ([1b2c6d9](https://github.com/promptfoo/promptfoo/commit/1b2c6d932494d38ad6162478d0a5fbb9a1a5f1fb))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/333141686","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/333141686/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/333141686/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.14","id":333141686,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4T21a2","tag_name":"0.121.14","target_commitish":"7a48c5fce614bee617efbb3b7fc93d404c75b628","name":"0.121.14","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-06-02T13:48:51Z","updated_at":"2026-06-02T13:49:18Z","published_at":"2026-06-02T13:49:18Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.14","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.14","body":"## [0.121.14](https://github.com/promptfoo/promptfoo/compare/0.121.13...0.121.14) (2026-06-02)\n\n\n### Features\n\n* add A2A provider ([#9586](https://github.com/promptfoo/promptfoo/issues/9586)) ([963b264](https://github.com/promptfoo/promptfoo/commit/963b264ba22d621282d0bf82efdae2b5defe6d59))\n* **assertions:** add agent-rubric grader ([#9453](https://github.com/promptfoo/promptfoo/issues/9453)) ([cadb3c5](https://github.com/promptfoo/promptfoo/commit/cadb3c500277464f05244c8bc8525c2725aa5c22))\n* **build:** publish a lightweight promptfoo/contracts subpath ([#9535](https://github.com/promptfoo/promptfoo/issues/9535)) ([6e89fd4](https://github.com/promptfoo/promptfoo/commit/6e89fd45abc97696a70079cddcb659492acc66d0))\n* **cli:** add seeded random sampling ([#9522](https://github.com/promptfoo/promptfoo/issues/9522)) ([6e4ba60](https://github.com/promptfoo/promptfoo/commit/6e4ba60eba69ff696d0404aabf5453311214c500))\n* **eval:** extract eval-creator readiness and validation modules ([#9397](https://github.com/promptfoo/promptfoo/issues/9397)) ([d3af118](https://github.com/promptfoo/promptfoo/commit/d3af1180405e82786461eae5bf85e50ce6b73f3a))\n* **eval:** surface trace linkage on result rows ([#9027](https://github.com/promptfoo/promptfoo/issues/9027)) ([9468d66](https://github.com/promptfoo/promptfoo/commit/9468d6607e858f9c1a1c77f43713f58a7dc154c5))\n* **providers:** add OpenAI GPT-5.5/5.4 frontier models + Codex on Amazon Bedrock ([#9587](https://github.com/promptfoo/promptfoo/issues/9587)) ([1e35267](https://github.com/promptfoo/promptfoo/commit/1e35267796ea372e1b4a8700ad15964d8171566b))\n* **providers:** add OpenAI originator header ([#9474](https://github.com/promptfoo/promptfoo/issues/9474)) ([6141070](https://github.com/promptfoo/promptfoo/commit/61410706acbc86772b1d60ac85d6988dc09f2fa6))\n* **providers:** expose traceable agent turn markers ([#9475](https://github.com/promptfoo/promptfoo/issues/9475)) ([4018837](https://github.com/promptfoo/promptfoo/commit/4018837455faf334ce2e07fd39a1fbc33c2960d2))\n* **providers:** promote Fireworks AI from registry stub to dedicated provider ([#9542](https://github.com/promptfoo/promptfoo/issues/9542)) ([2bae148](https://github.com/promptfoo/promptfoo/commit/2bae148be51975dbacaec2a4a5d36c839e897034))\n* **tracing:** add runtime receiver controls ([#9028](https://github.com/promptfoo/promptfoo/issues/9028)) ([90df6a1](https://github.com/promptfoo/promptfoo/commit/90df6a120710191ab4f64926e0b0636a3c891ea4))\n\n\n### Bug Fixes\n\n* **assertions:** don't classify gen_ai.tool.definitions chat spans as tool calls ([#9524](https://github.com/promptfoo/promptfoo/issues/9524)) ([b59f397](https://github.com/promptfoo/promptfoo/commit/b59f3974851657a8a97c05db09cc87064ba0528d))\n* **cli:** preflight force imports before collision lookup ([#9570](https://github.com/promptfoo/promptfoo/issues/9570)) ([0b93733](https://github.com/promptfoo/promptfoo/commit/0b93733d48727be67e34433cb0fb1ad21026863a))\n* **cloud:** on-prem API host for guardrails and http-generator, with host-resolution tests ([#9580](https://github.com/promptfoo/promptfoo/issues/9580)) ([b9a014a](https://github.com/promptfoo/promptfoo/commit/b9a014a3de85f26402312ac96d94fe787f2ac764))\n* **cloud:** use on-prem API host in checkEmailStatus ([#9576](https://github.com/promptfoo/promptfoo/issues/9576)) ([063c62b](https://github.com/promptfoo/promptfoo/commit/063c62b5d0df93ecf10ccdd6831ab0a2534b4df3))\n* **db:** avoid SQLITE_LOCKED flakiness in shared-cache test database ([#9567](https://github.com/promptfoo/promptfoo/issues/9567)) ([1fdb59b](https://github.com/promptfoo/promptfoo/commit/1fdb59b44f771952e5e96eb01ade2a54035fcaa0))\n* **db:** serialize libsql test database cleanup ([#9540](https://github.com/promptfoo/promptfoo/issues/9540)) ([f4380c2](https://github.com/promptfoo/promptfoo/commit/f4380c23f1e62eb1a2e171155d1437a1645d01dd))\n* **deps:** keep ModelAudit pydantic-core pinned to compatible 2.46.4 ([b2b35b0](https://github.com/promptfoo/promptfoo/commit/b2b35b079aab5ba338700d891a4ec189d4e468d7))\n* **deps:** update dependency ai to ^6.0.190 ([#9577](https://github.com/promptfoo/promptfoo/issues/9577)) ([9ec614a](https://github.com/promptfoo/promptfoo/commit/9ec614a175668d1775c332de8c272a01b6c28341))\n* **eval:** canonicalize retry JSONL output with atomic rewrites ([#9547](https://github.com/promptfoo/promptfoo/issues/9547)) ([8d7c920](https://github.com/promptfoo/promptfoo/commit/8d7c920101f495b87d23bcbd3c32fa01147db10d))\n* **eval:** redact credentials from the persisted browser store ([#9396](https://github.com/promptfoo/promptfoo/issues/9396)) ([4d5bed5](https://github.com/promptfoo/promptfoo/commit/4d5bed56b94de0351d8348f7a6b8b25a1bbc14e1))\n* **evaluator:** preserve and harden programmatic JSONL output ([#9538](https://github.com/promptfoo/promptfoo/issues/9538)) ([8ddd906](https://github.com/promptfoo/promptfoo/commit/8ddd9064de73d8e454ddab5adfaac32f64704137))\n* **output:** redact api-key and legacy transport headers in JSONL/DB ([#9546](https://github.com/promptfoo/promptfoo/issues/9546)) ([e194c85](https://github.com/promptfoo/promptfoo/commit/e194c852a4303faefab109c151c74134e1556403))\n* **providers:** handle Codex SDK rate limits ([#9473](https://github.com/promptfoo/promptfoo/issues/9473)) ([76d3db4](https://github.com/promptfoo/promptfoo/commit/76d3db402b04fbad08580907b025b93120b7d2a4))\n* **providers:** inject n8n sessions into custom bodies ([#9527](https://github.com/promptfoo/promptfoo/issues/9527)) ([9cc0542](https://github.com/promptfoo/promptfoo/commit/9cc05429af81ff6493bc8f4f448be3ce3e1c55c7))\n* **providers:** preserve n8n array body templates ([#9544](https://github.com/promptfoo/promptfoo/issues/9544)) ([6cdf63d](https://github.com/promptfoo/promptfoo/commit/6cdf63d02752bcc23fb2ab68a14e620447460df8))\n* **providers:** preserve streamed Anthropic refusal guardrails ([#9560](https://github.com/promptfoo/promptfoo/issues/9560)) ([ff8eafd](https://github.com/promptfoo/promptfoo/commit/ff8eafd743cf6d63dd85b790ad8a4c73ede5828d))\n* **providers:** serialize persistent browser sessions ([#9414](https://github.com/promptfoo/promptfoo/issues/9414)) ([097ff9b](https://github.com/promptfoo/promptfoo/commit/097ff9bab6d6692b54c385867a72c63fd106f471))\n* **redteam:** authenticate remote-generation requests against on-prem cloud ([#9584](https://github.com/promptfoo/promptfoo/issues/9584)) ([7df8fae](https://github.com/promptfoo/promptfoo/commit/7df8fae21ceb5eb51f4c246bce8ba16a11de2c1c))\n* **util:** restore nested SAS tokens after array reorder ([#9528](https://github.com/promptfoo/promptfoo/issues/9528)) ([9759e5a](https://github.com/promptfoo/promptfoo/commit/9759e5a58099a702e313013daa04149530473e33))\n* **webui:** render negative-only metric charts ([#9526](https://github.com/promptfoo/promptfoo/issues/9526)) ([7ccafa4](https://github.com/promptfoo/promptfoo/commit/7ccafa4c74c391516a5e371c9db2918e415f078f))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/331253391","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/331253391/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/331253391/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/code-scan-action-0.1.7","id":331253391,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4TvoaP","tag_name":"code-scan-action-0.1.7","target_commitish":"1c743afe0e4807882e858c4f322fc064fa5f0770","name":"code-scan-action: 0.1.7","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-29T03:02:39Z","updated_at":"2026-05-29T03:02:57Z","published_at":"2026-05-29T03:02:57Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/code-scan-action-0.1.7","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/code-scan-action-0.1.7","body":"## [0.1.7](https://github.com/promptfoo/promptfoo/compare/code-scan-action-0.1.6...code-scan-action-0.1.7) (2026-05-29)\n\n\n### Bug Fixes\n\n* **code-scan:** emit structured fork PR skip output ([#9426](https://github.com/promptfoo/promptfoo/issues/9426)) ([61c624c](https://github.com/promptfoo/promptfoo/commit/61c624c7f91808a6f59d8b837dbb3896dd9a74c0))\n* **code-scan:** honor minimum-severity alias when min-severity is unset ([#9433](https://github.com/promptfoo/promptfoo/issues/9433)) ([ea5ea9e](https://github.com/promptfoo/promptfoo/commit/ea5ea9e741da0968431de25c0d67337f2e0e6e20))\n* **eval:** show test descriptions in HTML output ([#9390](https://github.com/promptfoo/promptfoo/issues/9390)) ([206f1dd](https://github.com/promptfoo/promptfoo/commit/206f1dd9848607ed9d4eba1f7998f90b8f87f0ff))\n* **providers:** honor Vertex default host overrides ([#9389](https://github.com/promptfoo/promptfoo/issues/9389)) ([11a8d9b](https://github.com/promptfoo/promptfoo/commit/11a8d9b1c4edf214e8e15dd6794690ab49d24430))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/331208091","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/331208091/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/331208091/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.13","id":331208091,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4TvdWb","tag_name":"0.121.13","target_commitish":"4860e990c7e9a2f8f677173fb92cf9867b34d03f","name":"0.121.13","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-28T23:49:48Z","updated_at":"2026-05-28T23:50:03Z","published_at":"2026-05-28T23:50:03Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.13","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.13","body":"## [0.121.13](https://github.com/promptfoo/promptfoo/compare/0.121.12...0.121.13) (2026-05-28)\n\n\n### Features\n\n* add MiniMax provider ([#8207](https://github.com/promptfoo/promptfoo/issues/8207)) ([ebd78f6](https://github.com/promptfoo/promptfoo/commit/ebd78f6b9c22c4a61050e8f767aee211729415a2))\n* **anthropic:** add support for Claude Opus 4.8 ([#9500](https://github.com/promptfoo/promptfoo/issues/9500)) ([e090730](https://github.com/promptfoo/promptfoo/commit/e0907306ecf388a27e606407eef7a89f6c6d92bc))\n* **assertions:** add ignore option to trajectory:tool-args-match ([#9466](https://github.com/promptfoo/promptfoo/issues/9466)) ([6423f2a](https://github.com/promptfoo/promptfoo/commit/6423f2a5c95ed84a3210806eda222a23d0a30c01))\n* **assertions:** add metadata shortcut to assertion context ([#6863](https://github.com/promptfoo/promptfoo/issues/6863)) ([5264680](https://github.com/promptfoo/promptfoo/commit/5264680f1bb5372fbebc1a780b0e6c8f77455b2a))\n* **assertions:** support glob patterns in trajectory:tool-args-match ignore ([#9484](https://github.com/promptfoo/promptfoo/issues/9484)) ([18b3eef](https://github.com/promptfoo/promptfoo/commit/18b3eefd48a2ff8dd6ee69160e86523823ee10e3))\n* **assertions:** tolerate optional defaults in trajectory:tool-args-match ([#9471](https://github.com/promptfoo/promptfoo/issues/9471)) ([a74894a](https://github.com/promptfoo/promptfoo/commit/a74894a4ff26872d88fa2008b8a1c13b725ccb56))\n* **cli:** add prompt optimization ([#9294](https://github.com/promptfoo/promptfoo/issues/9294)) ([27d6dbe](https://github.com/promptfoo/promptfoo/commit/27d6dbe36e5ca63aaf32a185e3464e278746f89c))\n* **cli:** warn on deprecated Node.js 20 runtime ([#9494](https://github.com/promptfoo/promptfoo/issues/9494)) ([8de3408](https://github.com/promptfoo/promptfoo/commit/8de3408fc1f74fb7d6079903f39451a664416e6e))\n* **eval:** add eval runtime vars ([#9331](https://github.com/promptfoo/promptfoo/issues/9331)) ([3c76045](https://github.com/promptfoo/promptfoo/commit/3c76045e30afea3d022a18c2df8c3fce6db98d18))\n* **eval:** add output detail deep links ([#9170](https://github.com/promptfoo/promptfoo/issues/9170)) ([1f5845b](https://github.com/promptfoo/promptfoo/commit/1f5845b9f508a01de0b821c6671eae438fb7109c))\n* **eval:** load test sets from azure blob storage ([#9282](https://github.com/promptfoo/promptfoo/issues/9282)) ([b5ea8ab](https://github.com/promptfoo/promptfoo/commit/b5ea8abf56fe16bef058cb40d15439062a35e42c))\n* **google:** add Gemini 3.5 Flash and refresh Google/Vertex models ([#9376](https://github.com/promptfoo/promptfoo/issues/9376)) ([6c81c8d](https://github.com/promptfoo/promptfoo/commit/6c81c8df89678f869d8f3b69a7728e04ea24b345))\n* **output:** add html report detail drawer ([#9291](https://github.com/promptfoo/promptfoo/issues/9291)) ([8c54598](https://github.com/promptfoo/promptfoo/commit/8c54598c67d404d398c761ac44fd81bec194233f))\n* **output:** add named metric columns to CSV exports ([#9480](https://github.com/promptfoo/promptfoo/issues/9480)) ([4531750](https://github.com/promptfoo/promptfoo/commit/45317507bd8993f4b7c91e41bfbf925884c06754))\n* **providers:** add MLflow AI Gateway provider ([#8860](https://github.com/promptfoo/promptfoo/issues/8860)) ([d0e7e2d](https://github.com/promptfoo/promptfoo/commit/d0e7e2d96d3639ee6fd7a93a48dc3f28fac51b56))\n* **providers:** add n8n webhook provider ([#6770](https://github.com/promptfoo/promptfoo/issues/6770)) ([3dc6e32](https://github.com/promptfoo/promptfoo/commit/3dc6e32d1824d94f053ef95fcd72a569980bcf1e))\n* **providers:** add Novita provider ([#8190](https://github.com/promptfoo/promptfoo/issues/8190)) ([42930e8](https://github.com/promptfoo/promptfoo/commit/42930e872e60ecf225a6d01890e6a8aed8116778))\n* **providers:** add NVIDIA NIM provider ([#9491](https://github.com/promptfoo/promptfoo/issues/9491)) ([fa3e4a9](https://github.com/promptfoo/promptfoo/commit/fa3e4a9a43b302606355b1365ac4a533b0bf9fbc))\n* **providers:** add OrcaRouter provider ([#9493](https://github.com/promptfoo/promptfoo/issues/9493)) ([fe115ab](https://github.com/promptfoo/promptfoo/commit/fe115abe52278a48a9f94a1dbfe0f0c30296ce08))\n* **redteam:** add runtime tags to redteam run ([#9499](https://github.com/promptfoo/promptfoo/issues/9499)) ([72d4cb4](https://github.com/promptfoo/promptfoo/commit/72d4cb493e54a0dc632d3fa9e6582191407f13a0))\n\n\n### Bug Fixes\n\n* **app:** clarify metric pill filtering ([#9252](https://github.com/promptfoo/promptfoo/issues/9252)) ([05e5a30](https://github.com/promptfoo/promptfoo/commit/05e5a30eb28acf30dbc6256b58c9a28bcf85f1ca))\n* **app:** reorder eval output actions ([#9261](https://github.com/promptfoo/promptfoo/issues/9261)) ([91dc814](https://github.com/promptfoo/promptfoo/commit/91dc814467687214f371dbb83cc4571e0a0d9a28))\n* **cache:** make the fetch cache key stable across processes ([#9509](https://github.com/promptfoo/promptfoo/issues/9509)) ([7be3ef5](https://github.com/promptfoo/promptfoo/commit/7be3ef54250df638faaf9d1bbc0bf30a638c401a))\n* **ci:** avoid shell interpolation in telemetry check ([#9280](https://github.com/promptfoo/promptfoo/issues/9280)) ([4160a90](https://github.com/promptfoo/promptfoo/commit/4160a90a46f438f11c8f59c0b53124a36d634371))\n* **ci:** disable deploy dependency cache ([#9281](https://github.com/promptfoo/promptfoo/issues/9281)) ([f3a2502](https://github.com/promptfoo/promptfoo/commit/f3a250249d9c3c28fca8c88ab430925c76dae5ea))\n* **ci:** pin code-scan Node to 24.15.0 to stop install timeout ([#9374](https://github.com/promptfoo/promptfoo/issues/9374)) ([e200bb5](https://github.com/promptfoo/promptfoo/commit/e200bb55e4dd0a7314950e16fbbd237a3b8bb963))\n* **ci:** scope code-scan-action mirror sync to release artifacts ([#9363](https://github.com/promptfoo/promptfoo/issues/9363)) ([76c3a29](https://github.com/promptfoo/promptfoo/commit/76c3a298986b8c5a199656473c67a7cd349a868a))\n* classify script stderr by severity ([#9459](https://github.com/promptfoo/promptfoo/issues/9459)) ([1eeef19](https://github.com/promptfoo/promptfoo/commit/1eeef199dd5a55c23300d482fef2593abfe6d87e))\n* **cli:** validate optimization split input ([#9514](https://github.com/promptfoo/promptfoo/issues/9514)) ([e7e29d1](https://github.com/promptfoo/promptfoo/commit/e7e29d14986e9510db0b51e241858444c60ca219))\n* **code-scan:** emit structured fork PR skip output ([#9426](https://github.com/promptfoo/promptfoo/issues/9426)) ([61c624c](https://github.com/promptfoo/promptfoo/commit/61c624c7f91808a6f59d8b837dbb3896dd9a74c0))\n* **code-scan:** honor minimum-severity alias when min-severity is unset ([#9433](https://github.com/promptfoo/promptfoo/issues/9433)) ([ea5ea9e](https://github.com/promptfoo/promptfoo/commit/ea5ea9e741da0968431de25c0d67337f2e0e6e20))\n* **code-scan:** suppress SARIF on skipped fork scans ([#9451](https://github.com/promptfoo/promptfoo/issues/9451)) ([8236e65](https://github.com/promptfoo/promptfoo/commit/8236e65011807b227df69b19ca033e3066e1a96d))\n* **config:** dedupe repeated executable providers ([#9430](https://github.com/promptfoo/promptfoo/issues/9430)) ([6325653](https://github.com/promptfoo/promptfoo/commit/6325653f707fc48949dd683642600b96a8cc0521))\n* **config:** preserve all function providers in combineConfigs ([#9408](https://github.com/promptfoo/promptfoo/issues/9408)) ([ed4e29e](https://github.com/promptfoo/promptfoo/commit/ed4e29ea22462a2ef0572522d91db159badc067b))\n* **db:** isolate libsql test databases ([#9504](https://github.com/promptfoo/promptfoo/issues/9504)) ([b01b257](https://github.com/promptfoo/promptfoo/commit/b01b257bbfee524bfc24560e9b0b85f2b027f555))\n* **db:** parameterize JSON path filters ([#9345](https://github.com/promptfoo/promptfoo/issues/9345)) ([dc5e2ed](https://github.com/promptfoo/promptfoo/commit/dc5e2ededb2321006847ea4d42b7468b6579eee9))\n* **db:** replace better-sqlite3 with libsql ([#9486](https://github.com/promptfoo/promptfoo/issues/9486)) ([ca3dea4](https://github.com/promptfoo/promptfoo/commit/ca3dea486be75c5a0a94fa1e320c53414f38d891))\n* **db:** restore SQLite busy_timeout for the libsql driver ([#9508](https://github.com/promptfoo/promptfoo/issues/9508)) ([a74b2fe](https://github.com/promptfoo/promptfoo/commit/a74b2fe39c37519060c5773f69419fa3478c1cd7))\n* **deps:** avoid Socket-blocked package releases ([#9456](https://github.com/promptfoo/promptfoo/issues/9456)) ([89d6e61](https://github.com/promptfoo/promptfoo/commit/89d6e613161f47c165786973b709f15847f1d509))\n* **deps:** bump brace-expansion and webpack-dev-server [security] ([#9339](https://github.com/promptfoo/promptfoo/issues/9339)) ([bb1d57e](https://github.com/promptfoo/promptfoo/commit/bb1d57efdfd287e8151f714f0fa0ee71b8f97db5))\n* **deps:** lazy-load optional integration packages ([#9284](https://github.com/promptfoo/promptfoo/issues/9284)) ([db37941](https://github.com/promptfoo/promptfoo/commit/db3794179514a818fcef5aec63a109682c2aa174))\n* **deps:** patch qs denial of service advisory ([#9384](https://github.com/promptfoo/promptfoo/issues/9384)) ([b392051](https://github.com/promptfoo/promptfoo/commit/b392051d28b2beefabb5f1bd27313a0707b74da5))\n* **deps:** update anthropic packages ([#9461](https://github.com/promptfoo/promptfoo/issues/9461)) ([87277b9](https://github.com/promptfoo/promptfoo/commit/87277b9ad3832235ba1fba0c4c26fbd39c309147))\n* **deps:** update dependency engine.io to v6.6.7 ([#9457](https://github.com/promptfoo/promptfoo/issues/9457)) ([5f36395](https://github.com/promptfoo/promptfoo/commit/5f363957f6c4e24b6f4864ad26564647856ad185))\n* **deps:** update dependency engine.io to v6.6.8 ([#9477](https://github.com/promptfoo/promptfoo/issues/9477)) ([3366b67](https://github.com/promptfoo/promptfoo/commit/3366b673d3bdd098e58172709b52451ffb676b99))\n* **deps:** update dependency engine.io-client to v6.6.5 ([#9478](https://github.com/promptfoo/promptfoo/issues/9478)) ([32610e3](https://github.com/promptfoo/promptfoo/commit/32610e3f47905873dc08e83d7dea7f35fe977e1a))\n* **eval:** accept defaultTest-only configs in prompt optimizer ([#9365](https://github.com/promptfoo/promptfoo/issues/9365)) ([f8ecebd](https://github.com/promptfoo/promptfoo/commit/f8ecebdb1113ab6617c6888cad5e3a5b8f5b058f))\n* **eval:** error when optimizer pair has no runnable tests ([#9372](https://github.com/promptfoo/promptfoo/issues/9372)) ([45046ac](https://github.com/promptfoo/promptfoo/commit/45046ac496de3e1df0373b201714372d9346d24c))\n* **eval:** handle Google Sheets export classification ([#9385](https://github.com/promptfoo/promptfoo/issues/9385)) ([5ffeb33](https://github.com/promptfoo/promptfoo/commit/5ffeb33210aa0ecd85cfbfc8f0a03c94b8591a83))\n* **eval:** invalidate count cache after retry cleanup ([#9431](https://github.com/promptfoo/promptfoo/issues/9431)) ([3ea3599](https://github.com/promptfoo/promptfoo/commit/3ea3599c9b7798f88ea8248eb668453cf6db041f))\n* **eval:** invalidate history cache after result update ([#9487](https://github.com/promptfoo/promptfoo/issues/9487)) ([2e48494](https://github.com/promptfoo/promptfoo/commit/2e484949e7f3276299a319fcc4c7b02928c6735c))\n* **eval:** invalidate result-count cache on insert ([#9348](https://github.com/promptfoo/promptfoo/issues/9348)) ([#9421](https://github.com/promptfoo/promptfoo/issues/9421)) ([4651ceb](https://github.com/promptfoo/promptfoo/commit/4651ceb16225ec524db706fff608c4350d386b22))\n* **eval:** keep eval runtime vars out of persisted results ([#9370](https://github.com/promptfoo/promptfoo/issues/9370)) ([734db7c](https://github.com/promptfoo/promptfoo/commit/734db7c8b3e6ee3bd80583cc417e262a17d1697a))\n* **eval:** preserve all distinct CallApiFunction providers in combineConfigs ([#9402](https://github.com/promptfoo/promptfoo/issues/9402)) ([b7f2a93](https://github.com/promptfoo/promptfoo/commit/b7f2a9373f0030a5ee6da8e940e20c72298d7a34))\n* **eval:** preserve optimized prompt routing ([#9391](https://github.com/promptfoo/promptfoo/issues/9391)) ([fff7ca4](https://github.com/promptfoo/promptfoo/commit/fff7ca4644f0ce7aeb8f38361e1dc8f7456bda15))\n* **eval:** preserve prompt optimizer progress when a later round fails ([#9505](https://github.com/promptfoo/promptfoo/issues/9505)) ([211fadf](https://github.com/promptfoo/promptfoo/commit/211fadf7be8fc7019aa92eeb1a3212fad2a88136))\n* **eval:** prevent optimize from polluting jsonl output ([#9364](https://github.com/promptfoo/promptfoo/issues/9364)) ([1205a2a](https://github.com/promptfoo/promptfoo/commit/1205a2a2be77beb8505731515d0af1ee893cacb0))\n* **eval:** redact Azure Blob SAS tokens in outputs ([#9386](https://github.com/promptfoo/promptfoo/issues/9386)) ([23a5376](https://github.com/promptfoo/promptfoo/commit/23a5376b3efc4b195fc36a870da239aca627f140))\n* **eval:** refresh history cache after inserts ([#9496](https://github.com/promptfoo/promptfoo/issues/9496)) ([ed17310](https://github.com/promptfoo/promptfoo/commit/ed1731078993b9ae9ebd7038815423160fbd49a4))\n* **eval:** restore result header borders and live metrics ([#9273](https://github.com/promptfoo/promptfoo/issues/9273)) ([4ceaeb5](https://github.com/promptfoo/promptfoo/commit/4ceaeb504254a909e221a35c62b732829349f156))\n* **eval:** reuse configured grading provider references ([#9460](https://github.com/promptfoo/promptfoo/issues/9460)) ([28b26d9](https://github.com/promptfoo/promptfoo/commit/28b26d96cdd2798050c2d2ce86979d3c40b7c790))\n* **eval:** show test descriptions in HTML output ([#9390](https://github.com/promptfoo/promptfoo/issues/9390)) ([206f1dd](https://github.com/promptfoo/promptfoo/commit/206f1dd9848607ed9d4eba1f7998f90b8f87f0ff))\n* handle chart and Google response edge cases ([#9409](https://github.com/promptfoo/promptfoo/issues/9409)) ([09701a8](https://github.com/promptfoo/promptfoo/commit/09701a8fa0ba1f86ae2a941a9d1d775456b08f37))\n* **http:** isolate auth token cache ([#8636](https://github.com/promptfoo/promptfoo/issues/8636)) ([8d745cd](https://github.com/promptfoo/promptfoo/commit/8d745cd6456f24ab06837d2de1482fb0dd572f03))\n* **http:** redact debug request metadata ([#8635](https://github.com/promptfoo/promptfoo/issues/8635)) ([6594491](https://github.com/promptfoo/promptfoo/commit/6594491bccab61a8ebb4c687cdb9bc9ac56ba9ca))\n* **mcp:** use cryptographic session identifiers ([#9392](https://github.com/promptfoo/promptfoo/issues/9392)) ([c6f5144](https://github.com/promptfoo/promptfoo/commit/c6f5144c2abf0813e57e57ec618a6d42e3123b87))\n* **providers:** align Gemini safety block handling ([#9387](https://github.com/promptfoo/promptfoo/issues/9387)) ([45fed35](https://github.com/promptfoo/promptfoo/commit/45fed35c009e0258a0226b132538f149b4ba5bfa))\n* **providers:** harden callback file URL parsing ([#9479](https://github.com/promptfoo/promptfoo/issues/9479)) ([d6bfc1f](https://github.com/promptfoo/promptfoo/commit/d6bfc1f59349ca7ec747865e72704f7ae8bddfbb))\n* **providers:** honor Vertex default host overrides ([#9389](https://github.com/promptfoo/promptfoo/issues/9389)) ([11a8d9b](https://github.com/promptfoo/promptfoo/commit/11a8d9b1c4edf214e8e15dd6794690ab49d24430))\n* **providers:** improve invalid provider diagnostics ([#9405](https://github.com/promptfoo/promptfoo/issues/9405)) ([04c5aa4](https://github.com/promptfoo/promptfoo/commit/04c5aa4bdc604b1efdbe26588b132d5ce63ec133))\n* **providers:** normalize Claude Opus compatibility ([#9510](https://github.com/promptfoo/promptfoo/issues/9510)) ([14e9dc1](https://github.com/promptfoo/promptfoo/commit/14e9dc1998bd14397f820cf066edca29c8032825))\n* **providers:** preserve AI Studio grounding metadata ([#9436](https://github.com/promptfoo/promptfoo/issues/9436)) ([79b6b63](https://github.com/promptfoo/promptfoo/commit/79b6b6363fbba7e7cdfbfe2d3d8d06546bb62a20))\n* **providers:** preserve raw Google stream chunks ([#9437](https://github.com/promptfoo/promptfoo/issues/9437)) ([2875f4e](https://github.com/promptfoo/promptfoo/commit/2875f4e02ecf383b9d1a0771bd3726378c7e1a60))\n* **providers:** price unknown Grok Imagine slugs at the quality tier ([#9337](https://github.com/promptfoo/promptfoo/issues/9337)) ([efa689e](https://github.com/promptfoo/promptfoo/commit/efa689ee65ebf4b6819f4d0fc30733897a997882))\n* **providers:** redact MLflow Gateway api key and restore Novita routing test ([#9511](https://github.com/promptfoo/promptfoo/issues/9511)) ([9e2eaf5](https://github.com/promptfoo/promptfoo/commit/9e2eaf5e2b6596f1f51fb29c9e759da78a44e637))\n* **providers:** reject MiniMax function_call ([#9512](https://github.com/promptfoo/promptfoo/issues/9512)) ([b9a849b](https://github.com/promptfoo/promptfoo/commit/b9a849bccb7c1bfd2821e3fdbf984d95e886ce9d))\n* **providers:** return refreshed HTTP auth tokens safely ([#9394](https://github.com/promptfoo/promptfoo/issues/9394)) ([9a258a5](https://github.com/promptfoo/promptfoo/commit/9a258a521f190a77e7f10d9bbe474d3729264d01))\n* **providers:** show labels in missing API key diagnostics ([#9404](https://github.com/promptfoo/promptfoo/issues/9404)) ([b43625b](https://github.com/promptfoo/promptfoo/commit/b43625b44d86ceaa1e624766d475efb388666d6b))\n* **providers:** stop double-counting xAI reasoning tokens in cost ([#9326](https://github.com/promptfoo/promptfoo/issues/9326)) ([26f6d13](https://github.com/promptfoo/promptfoo/commit/26f6d137621c29680c9a7aa0a348f55c4ffd4959))\n* **providers:** stop double-counting xAI reasoning tokens in cost ([#9507](https://github.com/promptfoo/promptfoo/issues/9507)) ([7f2932c](https://github.com/promptfoo/promptfoo/commit/7f2932cf511f710f51f19aba87b2fae3798e0f61))\n* secure script temporary artifacts ([#9393](https://github.com/promptfoo/promptfoo/issues/9393)) ([c320916](https://github.com/promptfoo/promptfoo/commit/c320916d34a7eb5379c862408f6345c6e1801f99))\n* **server:** publish eval job completion only after results are saved ([#9395](https://github.com/promptfoo/promptfoo/issues/9395)) ([a9f5bcf](https://github.com/promptfoo/promptfoo/commit/a9f5bcfb95b729f5735b2beb2dadb9dae3b5f360))\n* **server:** restore Azure Blob SAS tokens by value, not array position ([#9516](https://github.com/promptfoo/promptfoo/issues/9516)) ([b7f4a04](https://github.com/promptfoo/promptfoo/commit/b7f4a048a90e0ae5d2c4978ed6a6867d557f3d3c))\n* **util:** don't misreport a missing transitive dep as the optional package ([#9513](https://github.com/promptfoo/promptfoo/issues/9513)) ([e93c817](https://github.com/promptfoo/promptfoo/commit/e93c817c2823167d641f7eec7d43762819a5bd7f))\n* **web-viewer:** preserve config variable order instead of alphabetizing ([#9435](https://github.com/promptfoo/promptfoo/issues/9435)) ([a53d6f7](https://github.com/promptfoo/promptfoo/commit/a53d6f749ffeec72808c041298b636fae338167f))\n* **webui:** avoid NaN in named metric charts ([#9352](https://github.com/promptfoo/promptfoo/issues/9352)) ([a6b860f](https://github.com/promptfoo/promptfoo/commit/a6b860fd5c9fa16607c5fb3a78efac949a588188))\n* **webui:** clear row hint on eval selection ([#9380](https://github.com/promptfoo/promptfoo/issues/9380)) ([4586da4](https://github.com/promptfoo/promptfoo/commit/4586da40f2dbe249952a5fdce1e36486d1d8bb31))\n* **webui:** clear stale eval detail row hint ([#9377](https://github.com/promptfoo/promptfoo/issues/9377)) ([c9a3f61](https://github.com/promptfoo/promptfoo/commit/c9a3f616be3cc34882414519b640d90ef93c34fa))\n* **webui:** clear stale rowId and details hash on filter clear ([#9369](https://github.com/promptfoo/promptfoo/issues/9369)) ([e9b8e98](https://github.com/promptfoo/promptfoo/commit/e9b8e98fee9fc7407bdc38232ed7b959c5a55040))\n* **webui:** harden eval table deep links and header borders ([#9285](https://github.com/promptfoo/promptfoo/issues/9285)) ([3514f6d](https://github.com/promptfoo/promptfoo/commit/3514f6d84cfc766824dfcc52384fc414b24daef8))\n* **webui:** make full metric chip area clickable ([#9368](https://github.com/promptfoo/promptfoo/issues/9368)) ([8eed102](https://github.com/promptfoo/promptfoo/commit/8eed10296cf8a065028efa779adc0ac69654a99d))\n* **webui:** page eval deep links by rowId when filtered ([#9371](https://github.com/promptfoo/promptfoo/issues/9371)) ([16ede34](https://github.com/promptfoo/promptfoo/commit/16ede34d87b89a12345980f232e6788a322b8e2e))\n\n\n### Performance Improvements\n\n* **webui:** speed up evaluation selection ([#9462](https://github.com/promptfoo/promptfoo/issues/9462)) ([dda3db3](https://github.com/promptfoo/promptfoo/commit/dda3db3622018b9f963174eb400f3fc7d21c58db))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/326599744","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/326599744/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/326599744/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.12","id":326599744,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Td4RA","tag_name":"0.121.12","target_commitish":"7b18902260f1927dbbdb0725ac292dd27dcf3a43","name":"0.121.12","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-21T06:17:10Z","updated_at":"2026-05-21T06:17:26Z","published_at":"2026-05-21T06:17:26Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.12","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.12","body":"## [0.121.12](https://github.com/promptfoo/promptfoo/compare/0.121.11...0.121.12) (2026-05-21)\n\n\n### Features\n\n* **cache:** support repeat-aware fetch cache options ([#6844](https://github.com/promptfoo/promptfoo/issues/6844)) ([c119832](https://github.com/promptfoo/promptfoo/commit/c1198327c02b6b51f7be829e0a56f45f95c33ae9))\n* **cli:** add searchable team selector ([#9243](https://github.com/promptfoo/promptfoo/issues/9243)) ([247eef5](https://github.com/promptfoo/promptfoo/commit/247eef5ad79b297d37cef4d6f3df98f94569556e))\n* **cli:** import OpenAI Evals dashboard exports ([#9305](https://github.com/promptfoo/promptfoo/issues/9305)) ([70cebab](https://github.com/promptfoo/promptfoo/commit/70cebab21d14d32eb751b3b061c162a0a13edee1))\n* **code-scan:** add SARIF output support ([#9161](https://github.com/promptfoo/promptfoo/issues/9161)) ([4da26e9](https://github.com/promptfoo/promptfoo/commit/4da26e95e4837ad9fd3363dfb52a86e5e1ceb66d))\n* **code-scan:** refine SARIF output ergonomics ([#9159](https://github.com/promptfoo/promptfoo/issues/9159)) ([ea3a655](https://github.com/promptfoo/promptfoo/commit/ea3a65521c55a7360cc315efa5f971673fb1f981))\n* **eval:** add metrics pills display toggle ([#9253](https://github.com/promptfoo/promptfoo/issues/9253)) ([eb7ecad](https://github.com/promptfoo/promptfoo/commit/eb7ecade9fcca51b95c195a5d8d9e0be5522f997))\n* **eval:** support runtime tags ([#9322](https://github.com/promptfoo/promptfoo/issues/9322)) ([5a09980](https://github.com/promptfoo/promptfoo/commit/5a09980f39ecbd9a99875639e0dbf87a5b1e9904))\n* **examples:** expand google adk integration ([#9047](https://github.com/promptfoo/promptfoo/issues/9047)) ([f190033](https://github.com/promptfoo/promptfoo/commit/f1900336eb1fe77bd4cff39f2083b80cf6349b92))\n* **mcp:** add response transforms ([#8943](https://github.com/promptfoo/promptfoo/issues/8943)) ([5d90bb7](https://github.com/promptfoo/promptfoo/commit/5d90bb724df6be7b028f032dd2a62b36c66e9510))\n* **providers:** normalize OpenCode skill usage ([#9250](https://github.com/promptfoo/promptfoo/issues/9250)) ([8930dad](https://github.com/promptfoo/promptfoo/commit/8930dad6ab051392c0c83b80b12d4b0dbb34daa2))\n* **providers:** support Agents SDK 0.9 workflows ([#9128](https://github.com/promptfoo/promptfoo/issues/9128)) ([0505ea1](https://github.com/promptfoo/promptfoo/commit/0505ea125003e1db71b6ba67b2f5521f7a0ccd83))\n* **redteam:** support context purpose overrides ([#9260](https://github.com/promptfoo/promptfoo/issues/9260)) ([ca62ec9](https://github.com/promptfoo/promptfoo/commit/ca62ec98f6ac4454b705086ead8bad0099794923))\n* **telemetry:** capture node runtime metadata ([#9206](https://github.com/promptfoo/promptfoo/issues/9206)) ([ec9d308](https://github.com/promptfoo/promptfoo/commit/ec9d308fd000426117422e2e96c0912e49c5e11f))\n\n\n### Bug Fixes\n\n* **app:** align table settings info buttons ([#9249](https://github.com/promptfoo/promptfoo/issues/9249)) ([a3252e9](https://github.com/promptfoo/promptfoo/commit/a3252e9716064c4612129625c575fd8d4e53635e))\n* **app:** improve custom metrics dialog readability ([#9248](https://github.com/promptfoo/promptfoo/issues/9248)) ([a3eafa4](https://github.com/promptfoo/promptfoo/commit/a3eafa495e7910b54b81c898afc26095095d0762))\n* **app:** sort custom metrics before truncation ([#9246](https://github.com/promptfoo/promptfoo/issues/9246)) ([74d2f9d](https://github.com/promptfoo/promptfoo/commit/74d2f9dcfd1f56a537ece207363f515bcbc105fe))\n* **cache:** include status in JSON parse errors ([#9317](https://github.com/promptfoo/promptfoo/issues/9317)) ([bb64b2e](https://github.com/promptfoo/promptfoo/commit/bb64b2eec87fb725b2d4820efbb722e889f6cc81))\n* **cli:** clearer errors for malformed eval imports ([#9333](https://github.com/promptfoo/promptfoo/issues/9333)) ([869fd54](https://github.com/promptfoo/promptfoo/commit/869fd54d7279556d974b422f38586022e7835805))\n* **code-scan:** isolate action OIDC token env ([#9309](https://github.com/promptfoo/promptfoo/issues/9309)) ([30c99e9](https://github.com/promptfoo/promptfoo/commit/30c99e924e02160db90385eff6f668c0ee551bc3))\n* **code-scan:** route logs to stderr for structured output ([#9329](https://github.com/promptfoo/promptfoo/issues/9329)) ([06cce72](https://github.com/promptfoo/promptfoo/commit/06cce72a675b67d5dd0fd5e26f1660f15ea80863))\n* **code-scan:** scope OIDC token to scan subprocess ([#9308](https://github.com/promptfoo/promptfoo/issues/9308)) ([178b57a](https://github.com/promptfoo/promptfoo/commit/178b57adb39d96d50012afd92a5e1b8e8e12ff75))\n* **code-scan:** skip unrelated default config startup ([#9230](https://github.com/promptfoo/promptfoo/issues/9230)) ([335d809](https://github.com/promptfoo/promptfoo/commit/335d809e29adbbb928e5653a11c69ff449df1768))\n* **deps:** avoid incompatible npm release-age config ([#9244](https://github.com/promptfoo/promptfoo/issues/9244)) ([b8bfb73](https://github.com/promptfoo/promptfoo/commit/b8bfb7395c3319367f7ccf87e4a7a596b680a02e))\n* **deps:** bump nested ws to a non-vulnerable version ([#9330](https://github.com/promptfoo/promptfoo/issues/9330)) ([1fe31a4](https://github.com/promptfoo/promptfoo/commit/1fe31a4468d5a0af4e4a685cde2702694643e28e))\n* **deps:** clear protobuf and langsmith alerts ([#9219](https://github.com/promptfoo/promptfoo/issues/9219)) ([d0995b8](https://github.com/promptfoo/promptfoo/commit/d0995b83154fab364cc9f1897140c42b1dce2a79))\n* **deps:** remove stray smithy lockfile root dependency ([#9271](https://github.com/promptfoo/promptfoo/issues/9271)) ([8f34641](https://github.com/promptfoo/promptfoo/commit/8f346416f09d28f920baadb0a3894af46780287b))\n* **deps:** resolve active advisories ([#9153](https://github.com/promptfoo/promptfoo/issues/9153)) ([47cd609](https://github.com/promptfoo/promptfoo/commit/47cd6090006670f376fb68b3b0a38a264f6c713f))\n* **deps:** update anthropic packages ([#9187](https://github.com/promptfoo/promptfoo/issues/9187)) ([a68ed8b](https://github.com/promptfoo/promptfoo/commit/a68ed8b77676e4ab0d981bc1aa9425999094ee68))\n* **deps:** update dependency @anthropic-ai/sdk to ^0.97.1 ([#9316](https://github.com/promptfoo/promptfoo/issues/9316)) ([88bc094](https://github.com/promptfoo/promptfoo/commit/88bc09485d56cb3894fec7fced79abdcd499a9c7))\n* **deps:** update dependency @inquirer/search to v4.1.9 ([#9277](https://github.com/promptfoo/promptfoo/issues/9277)) ([7a7ae06](https://github.com/promptfoo/promptfoo/commit/7a7ae061d81e63fecdf51738b5296883edb51fc7))\n* **deps:** update dependency @opentelemetry/exporter-trace-otlp-http to ^0.217.0 ([#9193](https://github.com/promptfoo/promptfoo/issues/9193)) ([082cb22](https://github.com/promptfoo/promptfoo/commit/082cb22cf4064ecf6404c30951a790ea49eb3984))\n* **deps:** update dependency ws to v8.20.1 [security] ([#9275](https://github.com/promptfoo/promptfoo/issues/9275)) ([bac18de](https://github.com/promptfoo/promptfoo/commit/bac18dee558e905776cec9dca2c8540720b572ae))\n* **deps:** update openai packages ([#9189](https://github.com/promptfoo/promptfoo/issues/9189)) ([f2ceff3](https://github.com/promptfoo/promptfoo/commit/f2ceff36f828aadb13b65cc222618db6e3668558))\n* **dev:** use tsx watch for server ([#9301](https://github.com/promptfoo/promptfoo/issues/9301)) ([f0280e6](https://github.com/promptfoo/promptfoo/commit/f0280e61dbde41d53d5883d0aa81ccf5a9ab0a36))\n* **eval:** allow header horizontal scrolling ([#9245](https://github.com/promptfoo/promptfoo/issues/9245)) ([4e3fb27](https://github.com/promptfoo/promptfoo/commit/4e3fb271254d06dce776f5338d300a0820199e24))\n* **eval:** preserve eval export import parity ([#9310](https://github.com/promptfoo/promptfoo/issues/9310)) ([ef7f98e](https://github.com/promptfoo/promptfoo/commit/ef7f98eae416db4772fc9b4f4ee914941b625cf9))\n* **fetch:** decompress fallback for compressed responses on Node 26 ([#9218](https://github.com/promptfoo/promptfoo/issues/9218)) ([93f5f1e](https://github.com/promptfoo/promptfoo/commit/93f5f1e625f563fc2d88f6e1d01c8f9d783a4222))\n* **fetch:** decompress pooled undici responses ([#9234](https://github.com/promptfoo/promptfoo/issues/9234)) ([e193d61](https://github.com/promptfoo/promptfoo/commit/e193d615c5c04e2acb99eeaec1c911c188fca690))\n* guard against empty choices and message=None in swe_runner example ([#9263](https://github.com/promptfoo/promptfoo/issues/9263)) ([b6ce944](https://github.com/promptfoo/promptfoo/commit/b6ce944871728a5a870abb38eaaa8b5182313a01))\n* isolate loadFunction cache entries ([#9255](https://github.com/promptfoo/promptfoo/issues/9255)) ([1e3533e](https://github.com/promptfoo/promptfoo/commit/1e3533e78a20b5a1f0754a9e8c4706ee9d66c853))\n* **mcp:** surface tool error results ([#9320](https://github.com/promptfoo/promptfoo/issues/9320)) ([b600a27](https://github.com/promptfoo/promptfoo/commit/b600a27d3f84ea6f31e0fb032d554de497ff4377))\n* **openclaw:** support protocol negotiation for versions 3 and 4 ([#9254](https://github.com/promptfoo/promptfoo/issues/9254)) ([4220562](https://github.com/promptfoo/promptfoo/commit/42205628b760f0a07419a95080c0a6b3a626b16f))\n* **providers:** aggregate command output deltas ([#9204](https://github.com/promptfoo/promptfoo/issues/9204)) ([5f89b7c](https://github.com/promptfoo/promptfoo/commit/5f89b7c86ea04e5c03fbe7789dd0e47aed05bf43))\n* **providers:** avoid constant-key cache HMAC ([#9152](https://github.com/promptfoo/promptfoo/issues/9152)) ([2b5db89](https://github.com/promptfoo/promptfoo/commit/2b5db898c7a51a354e1f0198cc952218b197c5af))\n* **providers:** decompress mTLS HTTP responses on Node 26 ([#9325](https://github.com/promptfoo/promptfoo/issues/9325)) ([4ff8315](https://github.com/promptfoo/promptfoo/commit/4ff831570406ebd320818d02bc77bb7d5fdf172a))\n* **providers:** execute Anthropic MCP tool results ([#9286](https://github.com/promptfoo/promptfoo/issues/9286)) ([a42dbd6](https://github.com/promptfoo/promptfoo/commit/a42dbd6cce1583466a769d8531d83787ab94ced5))\n* **providers:** harden codex app-server approvals and raw evidence ([#9131](https://github.com/promptfoo/promptfoo/issues/9131)) ([2299c31](https://github.com/promptfoo/promptfoo/commit/2299c31298115a7ada8f58b1f3a6c3544898aae7))\n* **providers:** harden OpenAI Realtime provider after [#9137](https://github.com/promptfoo/promptfoo/issues/9137) ([#9156](https://github.com/promptfoo/promptfoo/issues/9156)) ([9447d18](https://github.com/promptfoo/promptfoo/commit/9447d18c8400e217951b866079bf5c0cba5b21d3))\n* **providers:** honor max_tool_calls: 0 for Anthropic MCP ([#9327](https://github.com/promptfoo/promptfoo/issues/9327)) ([5b804e0](https://github.com/promptfoo/promptfoo/commit/5b804e031940b318035365a77455120e17eabb4d))\n* **providers:** map Python worker stderr log levels ([#9306](https://github.com/promptfoo/promptfoo/issues/9306)) ([bbd683c](https://github.com/promptfoo/promptfoo/commit/bbd683c6b9afd56b8f6271638874a83fcacae758))\n* **providers:** preserve interleaved command output deltas ([#9210](https://github.com/promptfoo/promptfoo/issues/9210)) ([3c03fbe](https://github.com/promptfoo/promptfoo/commit/3c03fbece86319a13e6e1a8c6bae446c1926d6ff))\n* **providers:** refresh xai grok support ([#9237](https://github.com/promptfoo/promptfoo/issues/9237)) ([58b1c6e](https://github.com/promptfoo/promptfoo/commit/58b1c6e8fbc0c20261af76e7e4f3dbe538ed49d2))\n* **providers:** support realtime tools in persistent sessions ([#9137](https://github.com/promptfoo/promptfoo/issues/9137)) ([00f6518](https://github.com/promptfoo/promptfoo/commit/00f6518b925419d52346dbc17e15f550ad44cdf3))\n* **providers:** tear down Realtime socket on response timeout ([#9324](https://github.com/promptfoo/promptfoo/issues/9324)) ([d3bb58c](https://github.com/promptfoo/promptfoo/commit/d3bb58ca8b2c97ca6f96a632e3ea524b9deb5978))\n* **redteam:** clarify empty custom intent scans ([#8990](https://github.com/promptfoo/promptfoo/issues/8990)) ([93b5579](https://github.com/promptfoo/promptfoo/commit/93b55799e8edb114d9898714a6b5b1b0280b2473))\n* **redteam:** improve setup control accessibility ([#9188](https://github.com/promptfoo/promptfoo/issues/9188)) ([0ea2f86](https://github.com/promptfoo/promptfoo/commit/0ea2f86100b879b18b8b457b65550d2aa58b2cc3))\n* **redteam:** redact plugin config logs ([#8661](https://github.com/promptfoo/promptfoo/issues/8661)) ([5ae731b](https://github.com/promptfoo/promptfoo/commit/5ae731bbf55c650178c18a74ae9c55f47bf9d8dc))\n* resolve code quality findings ([#9151](https://github.com/promptfoo/promptfoo/issues/9151)) ([83d80b8](https://github.com/promptfoo/promptfoo/commit/83d80b8dd6b02afb236c4170ae69f1be3b9c1671))\n* **server:** cap eval table page size ([#9313](https://github.com/promptfoo/promptfoo/issues/9313)) ([25286aa](https://github.com/promptfoo/promptfoo/commit/25286aac7964501d8faf86d42bbd6e2009a37546))\n* **ui:** improve table filter accessibility ([#9166](https://github.com/promptfoo/promptfoo/issues/9166)) ([cb5dab7](https://github.com/promptfoo/promptfoo/commit/cb5dab7d3907d53919d891c824a3bc0ef6df0070))\n* **ui:** wrap static table filters ([#9167](https://github.com/promptfoo/promptfoo/issues/9167)) ([9fffdca](https://github.com/promptfoo/promptfoo/commit/9fffdca717fedc9f6b0bb7fdde5a1c4722e63ba7))\n* **webui:** align custom intent count gating ([#9201](https://github.com/promptfoo/promptfoo/issues/9201)) ([007ae19](https://github.com/promptfoo/promptfoo/commit/007ae19dba7626af8dc282503100f79a5dc6803e))\n* **webui:** anchor nav menus to their triggers ([#9154](https://github.com/promptfoo/promptfoo/issues/9154)) ([cfb474d](https://github.com/promptfoo/promptfoo/commit/cfb474d631a10e28831df7a0c7f897247c950276))\n* **webui:** improve data table keyboard access ([#9171](https://github.com/promptfoo/promptfoo/issues/9171)) ([c4ce1b4](https://github.com/promptfoo/promptfoo/commit/c4ce1b4d4cbd7062127d3a31a315888aef5bb795))\n* **webui:** improve eval results table sizing ([#9257](https://github.com/promptfoo/promptfoo/issues/9257)) ([5269f22](https://github.com/promptfoo/promptfoo/commit/5269f2274626208589c160e6b36aa86c1ffbe736))\n* **webui:** restore nav dropdown animations and clean up after [#9154](https://github.com/promptfoo/promptfoo/issues/9154) ([#9169](https://github.com/promptfoo/promptfoo/issues/9169)) ([d0337d7](https://github.com/promptfoo/promptfoo/commit/d0337d710ad2547e74d09094816cb0a4bed5cffd))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/326627625","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/326627625/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/326627625/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/code-scan-action-0.1.6","id":326627625,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Td_Ep","tag_name":"code-scan-action-0.1.6","target_commitish":"40501990e8c988644401663360aa26714cee1718","name":"code-scan-action: 0.1.6","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-21T06:33:54Z","updated_at":"2026-05-21T06:49:49Z","published_at":"2026-05-21T06:49:49Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/code-scan-action-0.1.6","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/code-scan-action-0.1.6","body":"## [0.1.6](https://github.com/promptfoo/promptfoo/compare/code-scan-action-0.1.5...code-scan-action-0.1.6) (2026-05-21)\n\n\n### Features\n\n* **code-scan:** add SARIF output support ([#9161](https://github.com/promptfoo/promptfoo/issues/9161)) ([4da26e9](https://github.com/promptfoo/promptfoo/commit/4da26e95e4837ad9fd3363dfb52a86e5e1ceb66d))\n* **code-scan:** refine SARIF output ergonomics ([#9159](https://github.com/promptfoo/promptfoo/issues/9159)) ([ea3a655](https://github.com/promptfoo/promptfoo/commit/ea3a65521c55a7360cc315efa5f971673fb1f981))\n\n\n### Bug Fixes\n\n* **code-scan:** honor enable-fork-prs ([#8938](https://github.com/promptfoo/promptfoo/issues/8938)) ([517ec9d](https://github.com/promptfoo/promptfoo/commit/517ec9d3a0589be726bf024ea7d38bc28bb46702))\n* **code-scan:** isolate action OIDC token env ([#9309](https://github.com/promptfoo/promptfoo/issues/9309)) ([30c99e9](https://github.com/promptfoo/promptfoo/commit/30c99e924e02160db90385eff6f668c0ee551bc3))\n* **code-scan:** scope OIDC token to scan subprocess ([#9308](https://github.com/promptfoo/promptfoo/issues/9308)) ([178b57a](https://github.com/promptfoo/promptfoo/commit/178b57adb39d96d50012afd92a5e1b8e8e12ff75))\n* **deps:** update dependency undici to ^7.25.0 ([#9017](https://github.com/promptfoo/promptfoo/issues/9017)) ([5be6015](https://github.com/promptfoo/promptfoo/commit/5be6015ed51bccbaad03fc3c5a48e099f1f552cd))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/319283056","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/319283056/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/319283056/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.11","id":319283056,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4TB99w","tag_name":"0.121.11","target_commitish":"fa7dccf6b1d2cfc8bb9b70d1f0ab21bfe9abbeee","name":"0.121.11","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-08T02:15:48Z","updated_at":"2026-05-08T02:16:02Z","published_at":"2026-05-08T02:16:02Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.11","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.11","body":"## [0.121.11](https://github.com/promptfoo/promptfoo/compare/0.121.10...0.121.11) (2026-05-08)\n\n\n### Features\n\n* **quiverai:** add Arrow 1.1 models, vectorize endpoint, and GPT Image-2 pipeline ([#9139](https://github.com/promptfoo/promptfoo/issues/9139)) ([ce2c62d](https://github.com/promptfoo/promptfoo/commit/ce2c62d4f9cfd92bd8e48f45db2314271946c467))\n\n\n### Bug Fixes\n\n* **redteam:** handle MCP target prompt materialization ([#9149](https://github.com/promptfoo/promptfoo/issues/9149)) ([a050023](https://github.com/promptfoo/promptfoo/commit/a0500234494818a07ce1367e8c9c167531e8fb9b))\n* **redteam:** keep fresh target type state in sync ([#9145](https://github.com/promptfoo/promptfoo/issues/9145)) ([770130f](https://github.com/promptfoo/promptfoo/commit/770130fd8fce16e1071c418cc5f9c8b8a84244db))\n* **redteam:** show target type selector immediately ([#9141](https://github.com/promptfoo/promptfoo/issues/9141)) ([c143fa6](https://github.com/promptfoo/promptfoo/commit/c143fa625ea92bc01148174a84f60a1cb7d6d540))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/319283056/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/319007067","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/319007067/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/319007067/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.10","id":319007067,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4TA6lb","tag_name":"0.121.10","target_commitish":"1acb93faa8ac7cdf8fbaafcd4029626ebfcca5b5","name":"0.121.10","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-07T15:00:01Z","updated_at":"2026-05-07T15:00:35Z","published_at":"2026-05-07T15:00:35Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.10","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.10","body":"## [0.121.10](https://github.com/promptfoo/promptfoo/compare/0.121.9...0.121.10) (2026-05-07)\n\n\n### Features\n\n* **app:** humanize per-cell latency in eval results table ([#8998](https://github.com/promptfoo/promptfoo/issues/8998)) ([509aa54](https://github.com/promptfoo/promptfoo/commit/509aa54ab7d9811364dd9dbb72a5de2f3247e43c))\n* **bedrock:** add converse mcp support ([#9134](https://github.com/promptfoo/promptfoo/issues/9134)) ([c1fe183](https://github.com/promptfoo/promptfoo/commit/c1fe183cd760a088e0fef59ac3944f93fb818f09))\n* **claude-agent-sdk:** bump SDK to 0.2.120 and expose new options ([#8946](https://github.com/promptfoo/promptfoo/issues/8946)) ([350a24c](https://github.com/promptfoo/promptfoo/commit/350a24c31468553468f8228d26f5fdacbe3ae94f))\n* **cli:** add eval filter range ([#8895](https://github.com/promptfoo/promptfoo/issues/8895)) ([f049dd3](https://github.com/promptfoo/promptfoo/commit/f049dd3cd130378d8f719c308e6c8def3b294157))\n* **examples:** add integration-inspect-osworld wrapper ([#8932](https://github.com/promptfoo/promptfoo/issues/8932)) ([5d3279a](https://github.com/promptfoo/promptfoo/commit/5d3279aacb436f8dce5025f89d466901ba87c870))\n* **openapi:** generate server spec from route DTOs ([#8928](https://github.com/promptfoo/promptfoo/issues/8928)) ([c92102b](https://github.com/promptfoo/promptfoo/commit/c92102b077d0c2f99fa23c9634d92e9f57c69a9e))\n* **output:** add junit xml reports ([#9073](https://github.com/promptfoo/promptfoo/issues/9073)) ([ec8149c](https://github.com/promptfoo/promptfoo/commit/ec8149ced4867ae6ef89a7d9e514c13046af58be))\n* **providers:** add Atlas Cloud provider ([#8980](https://github.com/promptfoo/promptfoo/issues/8980)) ([90da094](https://github.com/promptfoo/promptfoo/commit/90da09483b99be997303d8e2addc9a272d038924))\n* **providers:** add first-class n parameter support for OpenAI chat completions ([#8914](https://github.com/promptfoo/promptfoo/issues/8914)) ([6e120b1](https://github.com/promptfoo/promptfoo/commit/6e120b1c656678b0ab4344eee8ecac183fe564fc))\n* **providers:** expose OpenAI prompt cache controls ([#9093](https://github.com/promptfoo/promptfoo/issues/9093)) ([9ec9c1f](https://github.com/promptfoo/promptfoo/commit/9ec9c1ffd2b493e604cdfe62bf793893f1a5246c))\n* **providers:** update mistral support ([#9018](https://github.com/promptfoo/promptfoo/issues/9018)) ([130f59f](https://github.com/promptfoo/promptfoo/commit/130f59f8dad8ee612c651195fc72b50e2885021a))\n* **xai:** refresh provider support ([#9033](https://github.com/promptfoo/promptfoo/issues/9033)) ([c2c7abf](https://github.com/promptfoo/promptfoo/commit/c2c7abfa8c40e8a855977167c739cb6b7e7785e4))\n\n\n### Bug Fixes\n\n* **api:** add DTO validation for core server routes ([#8922](https://github.com/promptfoo/promptfoo/issues/8922)) ([87f637f](https://github.com/promptfoo/promptfoo/commit/87f637f9ce208eb9317b6a77afa727876b863a51))\n* **api:** correct user-visible response regressions ([#8976](https://github.com/promptfoo/promptfoo/issues/8976)) ([74e7f95](https://github.com/promptfoo/promptfoo/commit/74e7f9543ab6b7fb6d502b0c02bb4cabbc01dde9))\n* **api:** harden node package contracts ([#9055](https://github.com/promptfoo/promptfoo/issues/9055)) ([be44d4e](https://github.com/promptfoo/promptfoo/commit/be44d4ed765a8c6d481e5b00fde50f9436d1239f))\n* **api:** make modelAudit safeRespond fire-safe under parse failures ([#8977](https://github.com/promptfoo/promptfoo/issues/8977)) ([524c5e6](https://github.com/promptfoo/promptfoo/commit/524c5e6bf84820ac9e9629a96b7be5f2f81e233a))\n* **api:** preserve error details and stack traces in shared helpers ([#8975](https://github.com/promptfoo/promptfoo/issues/8975)) ([ed0b67b](https://github.com/promptfoo/promptfoo/commit/ed0b67bc2bf49eca4a547e40aa7127e8623c1acb))\n* **api:** validate eval route DTOs ([#8924](https://github.com/promptfoo/promptfoo/issues/8924)) ([84d5c8c](https://github.com/promptfoo/promptfoo/commit/84d5c8c56716af761e21d6b4ec3d63930de31ffe))\n* **api:** validate media, blob, user, and trace DTOs ([#8923](https://github.com/promptfoo/promptfoo/issues/8923)) ([9a313f5](https://github.com/promptfoo/promptfoo/commit/9a313f5c174ba6e602986301971e11e20da7fb2b))\n* **api:** validate model audit route DTOs ([#8927](https://github.com/promptfoo/promptfoo/issues/8927)) ([684ae81](https://github.com/promptfoo/promptfoo/commit/684ae812724e118fa2ca00e3199f0354f148b017))\n* **api:** validate provider route DTOs ([#8925](https://github.com/promptfoo/promptfoo/issues/8925)) ([b761730](https://github.com/promptfoo/promptfoo/commit/b76173059f42a0a15dea2858562d73733bd1e6a8))\n* **app:** make update banner dismiss button clickable ([#8942](https://github.com/promptfoo/promptfoo/issues/8942)) ([79a2864](https://github.com/promptfoo/promptfoo/commit/79a2864fea8eff599289c68f411f12b90d02d74f))\n* **assertions:** avoid slow XML candidate matching ([#8941](https://github.com/promptfoo/promptfoo/issues/8941)) ([df029d2](https://github.com/promptfoo/promptfoo/commit/df029d203f7885e3ed245c156dd1493f6eed22d7))\n* **assertions:** invert not-llm-rubric results ([#8986](https://github.com/promptfoo/promptfoo/issues/8986)) ([c45831b](https://github.com/promptfoo/promptfoo/commit/c45831b90ed21a277004d746eadd5dcc45646001))\n* **assertions:** normalize shell command arrays in trajectories ([#9060](https://github.com/promptfoo/promptfoo/issues/9060)) ([a39fac1](https://github.com/promptfoo/promptfoo/commit/a39fac1e60054faa992831d769381b3aa029d03e))\n* **assertions:** support indexed XML paths ([#8970](https://github.com/promptfoo/promptfoo/issues/8970)) ([bd3969f](https://github.com/promptfoo/promptfoo/commit/bd3969fc08679156b320a239632b97052f66b8f0))\n* **cache:** hash anthropic cache keys ([#8642](https://github.com/promptfoo/promptfoo/issues/8642)) ([d1f1e5b](https://github.com/promptfoo/promptfoo/commit/d1f1e5b48990133521586e5d5cee49031b4b60de))\n* **cache:** hash bedrock cache keys ([#8644](https://github.com/promptfoo/promptfoo/issues/8644)) ([d65fa5e](https://github.com/promptfoo/promptfoo/commit/d65fa5eb759b369b66c0b4ffb6610844166113ae))\n* **cache:** hash vertex and foundry keys ([#8640](https://github.com/promptfoo/promptfoo/issues/8640)) ([c7b2486](https://github.com/promptfoo/promptfoo/commit/c7b2486899bb2b4a5295678553b544b5ad52b5ed))\n* **cache:** stabilize Anthropic cache hashes across runs ([#9124](https://github.com/promptfoo/promptfoo/issues/9124)) ([8e72bd1](https://github.com/promptfoo/promptfoo/commit/8e72bd13869c02ac5f89437c5e97b939aeca7239))\n* **cli:** avoid hard exits in recoverable flows ([#9118](https://github.com/promptfoo/promptfoo/issues/9118)) ([d00bddd](https://github.com/promptfoo/promptfoo/commit/d00bdddf0ffef3ec4c7d23582f7b92ad51b30564))\n* **cli:** explain better-sqlite3 ABI mismatches ([#9000](https://github.com/promptfoo/promptfoo/issues/9000)) ([fc7573a](https://github.com/promptfoo/promptfoo/commit/fc7573a5b3b109644c4236df0985df49d39b7921))\n* **cli:** fail closed on modelaudit signal exits ([#9014](https://github.com/promptfoo/promptfoo/issues/9014)) ([2f29f65](https://github.com/promptfoo/promptfoo/commit/2f29f6587be2476619dda367009bf0cf7dc91f70))\n* **code-scan:** honor enable-fork-prs ([#8938](https://github.com/promptfoo/promptfoo/issues/8938)) ([517ec9d](https://github.com/promptfoo/promptfoo/commit/517ec9d3a0589be726bf024ea7d38bc28bb46702))\n* **codex:** isolate default providers by credential ([#8633](https://github.com/promptfoo/promptfoo/issues/8633)) ([dddd275](https://github.com/promptfoo/promptfoo/commit/dddd275c5df20d8d01341de405a30bd9afe78538))\n* **config:** make resolution errors reusable ([#9008](https://github.com/promptfoo/promptfoo/issues/9008)) ([6b8d3db](https://github.com/promptfoo/promptfoo/commit/6b8d3db8dcd260bae7de7d91526311705d9bc598))\n* **deps:** update dependency ai to ^6.0.168 ([#9007](https://github.com/promptfoo/promptfoo/issues/9007)) ([95adf3c](https://github.com/promptfoo/promptfoo/commit/95adf3c7a19e766bbace368d7dde6eb8a1958a9a))\n* **deps:** update dependency fast-xml-parser to ^5.7.1 ([#9010](https://github.com/promptfoo/promptfoo/issues/9010)) ([72140be](https://github.com/promptfoo/promptfoo/commit/72140be7c48f3afb1632776e5ebfa1d39821f379))\n* **deps:** update dependency undici to ^7.25.0 ([#9017](https://github.com/promptfoo/promptfoo/issues/9017)) ([5be6015](https://github.com/promptfoo/promptfoo/commit/5be6015ed51bccbaad03fc3c5a48e099f1f552cd))\n* **deps:** update openai packages ([#9092](https://github.com/promptfoo/promptfoo/issues/9092)) ([efe2cd0](https://github.com/promptfoo/promptfoo/commit/efe2cd06258d049781344750071774a7299379a6))\n* **deps:** update opentelemetry ([#9103](https://github.com/promptfoo/promptfoo/issues/9103)) ([9106ef0](https://github.com/promptfoo/promptfoo/commit/9106ef0d2799bec96de627fbdba3ce03f9b904ad))\n* **eval:** delete traces with eval records ([#8973](https://github.com/promptfoo/promptfoo/issues/8973)) ([a395551](https://github.com/promptfoo/promptfoo/commit/a395551503dc63851b52a74c5c9ed97351cf19f2))\n* **eval:** harden OpenAI media blob exports ([#8876](https://github.com/promptfoo/promptfoo/issues/8876)) ([9d4948b](https://github.com/promptfoo/promptfoo/commit/9d4948bfa7318e422ddbf8367972c227e8285c9e))\n* **eval:** honor prompt suggestion counts ([#9105](https://github.com/promptfoo/promptfoo/issues/9105)) ([3f98e0d](https://github.com/promptfoo/promptfoo/commit/3f98e0da0ab6d757c094da7b7daf4e0ad6460836))\n* **eval:** honor sharing disable for blob uploads ([#8940](https://github.com/promptfoo/promptfoo/issues/8940)) ([77fa02a](https://github.com/promptfoo/promptfoo/commit/77fa02ad89ecab4c5ca3424b1f879e9ec4a366c0))\n* **eval:** keep package APIs in library mode ([#9111](https://github.com/promptfoo/promptfoo/issues/9111)) ([3bc3a22](https://github.com/promptfoo/promptfoo/commit/3bc3a226eec83275c50c1dd3381c917f2bfb309f))\n* **eval:** preserve filter range on resume ([#8960](https://github.com/promptfoo/promptfoo/issues/8960)) ([cd16d65](https://github.com/promptfoo/promptfoo/commit/cd16d652ae79a4dcf178df74af943adc21a601a4))\n* **eval:** stop HuggingFace empty-page loops ([#8939](https://github.com/promptfoo/promptfoo/issues/8939)) ([56b3c9f](https://github.com/promptfoo/promptfoo/commit/56b3c9fc9533082c832749e68379119ee7be173e))\n* **google:** drop late live messages after resolution ([#9138](https://github.com/promptfoo/promptfoo/issues/9138)) ([f21272d](https://github.com/promptfoo/promptfoo/commit/f21272d1b9ab0e9c7bec73467a9433fe160e010a))\n* **google:** use AIStudioChatProvider for default grading providers ([#9108](https://github.com/promptfoo/promptfoo/issues/9108)) ([42ab9dd](https://github.com/promptfoo/promptfoo/commit/42ab9dd60b70e20ce3fb69baa66ed89d7771da95))\n* **model-audit:** fail closed across report flows ([#9050](https://github.com/promptfoo/promptfoo/issues/9050)) ([f1d0a6c](https://github.com/promptfoo/promptfoo/commit/f1d0a6c1d5a733cb0c30131e49003b5460413de0))\n* **output:** strip nested response metadata ([#9038](https://github.com/promptfoo/promptfoo/issues/9038)) ([ba3ecaa](https://github.com/promptfoo/promptfoo/commit/ba3ecaa3208a6bca6fba8930a471599cc805d0bb))\n* **output:** strip nested test case metadata ([#9039](https://github.com/promptfoo/promptfoo/issues/9039)) ([1179413](https://github.com/promptfoo/promptfoo/commit/117941353c15e770afdaab82fb8ca1699c645e2e))\n* **providers:** claude-agent-sdk returns main agent result, not first sub-agent result ([#9056](https://github.com/promptfoo/promptfoo/issues/9056)) ([a694552](https://github.com/promptfoo/promptfoo/commit/a694552e3b1b47e2a6856c8dc286a999e3b7e337))\n* **providers:** drop retired groq reasoning model ([#9025](https://github.com/promptfoo/promptfoo/issues/9025)) ([937e1c9](https://github.com/promptfoo/promptfoo/commit/937e1c9b54271b3c7abfa12c43133e29305b84cd))\n* **providers:** expose OpenAI prompt cache controls ([#9093](https://github.com/promptfoo/promptfoo/issues/9093)) ([7fbbdca](https://github.com/promptfoo/promptfoo/commit/7fbbdca3844fedd70248f3973990841bd527ae4a))\n* **providers:** honor disabled tools in model providers ([#9045](https://github.com/promptfoo/promptfoo/issues/9045)) ([cfdc9f9](https://github.com/promptfoo/promptfoo/commit/cfdc9f9eeeb9996838ef11f308ee3fbc8de61c22))\n* **providers:** honor passthrough for OpenAI embeddings ([#9107](https://github.com/promptfoo/promptfoo/issues/9107)) ([3eeccdb](https://github.com/promptfoo/promptfoo/commit/3eeccdb95f6565ffe3bbf6c759f2087ee6daf77d))\n* **providers:** improve openai pricing accuracy ([#9049](https://github.com/promptfoo/promptfoo/issues/9049)) ([6cb5be9](https://github.com/promptfoo/promptfoo/commit/6cb5be921186f37df3d6643ba711629541cf7a05))\n* **providers:** refresh WatsonX model metadata ([#9015](https://github.com/promptfoo/promptfoo/issues/9015)) ([355fbaf](https://github.com/promptfoo/promptfoo/commit/355fbaf6e71d1afe24b3e5242cc00f1ee70753bc))\n* **providers:** separate OpenCode fork cache keys ([#9102](https://github.com/promptfoo/promptfoo/issues/9102)) ([9851681](https://github.com/promptfoo/promptfoo/commit/9851681fe0e4d7f0de3e19e856e12aedb6a310d0))\n* **providers:** structured 429 classification in Azure assistants ([#8896](https://github.com/promptfoo/promptfoo/issues/8896)) ([d2c64d2](https://github.com/promptfoo/promptfoo/commit/d2c64d2ef64a60634f5554a3e6552fa093c21369))\n* **providers:** support newer bedrock chat models ([#9024](https://github.com/promptfoo/promptfoo/issues/9024)) ([f3be26f](https://github.com/promptfoo/promptfoo/commit/f3be26f9073655eb9324f006ebf0618c7bb9001d))\n* **providers:** unify coding agent working dirs ([#9043](https://github.com/promptfoo/promptfoo/issues/9043)) ([bfcac5b](https://github.com/promptfoo/promptfoo/commit/bfcac5bbb898ce2104fdafb55d773a38398b6206))\n* **providers:** use agent_reference for Azure AI Foundry agents ([#8987](https://github.com/promptfoo/promptfoo/issues/8987)) ([989a17e](https://github.com/promptfoo/promptfoo/commit/989a17eae99a078e3c4194b2beadd991646b9514))\n* **redteam:** honor coding-agent artifact vars ([#9133](https://github.com/promptfoo/promptfoo/issues/9133)) ([0187a8c](https://github.com/promptfoo/promptfoo/commit/0187a8c659b426eca87aca691d82565b99c47e0c))\n* **redteam:** improve SQL injection grading to distinguish from RBAC issues ([#7284](https://github.com/promptfoo/promptfoo/issues/7284)) ([2665cac](https://github.com/promptfoo/promptfoo/commit/2665cacb04173671c6db2defd997b21dffd3351d))\n* **redteam:** keep results toolbar visible ([#9125](https://github.com/promptfoo/promptfoo/issues/9125)) ([1a986ee](https://github.com/promptfoo/promptfoo/commit/1a986ee4162afdf3ab81bc7937c6c3ee5a1b6080))\n* **redteam:** make email validation failures recoverable ([#9012](https://github.com/promptfoo/promptfoo/issues/9012)) ([698b9ae](https://github.com/promptfoo/promptfoo/commit/698b9aed2b579032aeb0b56ca63647c9584f1c1e))\n* **redteam:** refine report table layout ([#9127](https://github.com/promptfoo/promptfoo/issues/9127)) ([3e5371f](https://github.com/promptfoo/promptfoo/commit/3e5371fdb1cc879935216b5ab463f8924a59fb16))\n* **redteam:** validate redteam route DTOs ([#8926](https://github.com/promptfoo/promptfoo/issues/8926)) ([1b8c4fb](https://github.com/promptfoo/promptfoo/commit/1b8c4fbfa2ac2cc27b219f5bd7c37d7833b3cecd))\n* **server:** honor remote generation disable for hosted helpers ([#8967](https://github.com/promptfoo/promptfoo/issues/8967)) ([61baa48](https://github.com/promptfoo/promptfoo/commit/61baa48fd8af154343dead7a0dacc2b101b4d599))\n* **test:** prevent test-hygiene race with parallel fixture writers ([#8948](https://github.com/promptfoo/promptfoo/issues/8948)) ([549e2b7](https://github.com/promptfoo/promptfoo/commit/549e2b760a0e67c6871e3a31e29ffb92e347df7a))\n* **tracing:** skip orphan otlp trace rows ([#9132](https://github.com/promptfoo/promptfoo/issues/9132)) ([a303d36](https://github.com/promptfoo/promptfoo/commit/a303d36c417a6ea6167ee8c8a3317942fbbff5e6))\n\n\n### Performance Improvements\n\n* **providers/http:** parallelize createHttpsAgent file reads ([#8956](https://github.com/promptfoo/promptfoo/issues/8956)) ([108c80b](https://github.com/promptfoo/promptfoo/commit/108c80be3d19b66c80592eb7b4431e45d58c2ccd))\n\n\n### Reverts\n\n* feat(providers): add first-class n parameter support for OpenAI chat completions ([#9113](https://github.com/promptfoo/promptfoo/issues/9113)) ([543b5de](https://github.com/promptfoo/promptfoo/commit/543b5dee7238805a661e097fdb78b3b4f536b8f0))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/319007067/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/314205652","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/314205652/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/314205652/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.9","id":314205652,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4SumXU","tag_name":"0.121.9","target_commitish":"195df77800b749679f73ed3f258d858d33d55b48","name":"0.121.9","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-27T18:14:47Z","updated_at":"2026-04-27T18:34:07Z","published_at":"2026-04-27T18:34:07Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.9","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.9","body":"## [0.121.9](https://github.com/promptfoo/promptfoo/compare/0.121.8...0.121.9) (2026-04-27)\n\n\n### Features\n\n* **providers:** add gpt-5.5 model support ([#8884](https://github.com/promptfoo/promptfoo/issues/8884)) ([8c5dc92](https://github.com/promptfoo/promptfoo/commit/8c5dc929a15e3f9c859f930cc71a6f7093bf666e))\n\n\n### Bug Fixes\n\n* **cli:** align command-line reference with CLI ([#8900](https://github.com/promptfoo/promptfoo/issues/8900)) ([c4ce0d4](https://github.com/promptfoo/promptfoo/commit/c4ce0d40632bac198660c0b2992197fd58d33517))\n* **deps:** update openai packages ([544d1c6](https://github.com/promptfoo/promptfoo/commit/544d1c647a7171613bac0da46ba645e9891fa72b))\n* **telemetry:** mirror person properties on every event ([#8902](https://github.com/promptfoo/promptfoo/issues/8902)) ([95ad451](https://github.com/promptfoo/promptfoo/commit/95ad4510963d18b0bdd139372005e0ecf6489da6))\n* prevent report table header icon overlap ([#8880](https://github.com/promptfoo/promptfoo/issues/8880)) ([ad87060](https://github.com/promptfoo/promptfoo/commit/ad8706077867f3c5deff4594d93955b1334df09b))\n* trailing slashes on internal routes, Docusaurus Link for internal hrefs, and test hygiene ([#8903](https://github.com/promptfoo/promptfoo/issues/8903)) ([0828ff7](https://github.com/promptfoo/promptfoo/commit/0828ff77785f861410c8fdb3ee4cfd99abcc45b6))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/314205652/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/313435967","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/313435967/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/313435967/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.8","id":313435967,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Srqc_","tag_name":"0.121.8","target_commitish":"bea4bde7e294c43f9825c7e565f04f1c956e76f2","name":"0.121.8","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-24T21:36:04Z","updated_at":"2026-04-24T21:36:25Z","published_at":"2026-04-24T21:36:25Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.8","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.8","body":"## [0.121.8](https://github.com/promptfoo/promptfoo/compare/0.121.7...0.121.8) (2026-04-24)\n\n\n### Features\n\n* **claude-agent-sdk:** bump to 0.2.116 and add title option ([#8858](https://github.com/promptfoo/promptfoo/issues/8858)) ([9bca53a](https://github.com/promptfoo/promptfoo/commit/9bca53a2502be2395690019fad65b5a008f14c05))\n* **providers:** add GPT-5.5 OpenAI support ([#8873](https://github.com/promptfoo/promptfoo/issues/8873)) ([6488623](https://github.com/promptfoo/promptfoo/commit/6488623e485742892dedd684ae3c1d2ae91574c1))\n\n\n### Bug Fixes\n\n* **cache:** hash azure assistant keys ([#8646](https://github.com/promptfoo/promptfoo/issues/8646)) ([7264a73](https://github.com/promptfoo/promptfoo/commit/7264a7382ae9671d5afe10c797cafb2bb499e9ce))\n* **deps:** update dependency uuid to v14 [security] ([#8864](https://github.com/promptfoo/promptfoo/issues/8864)) ([3fa2956](https://github.com/promptfoo/promptfoo/commit/3fa29560e020acef2539b4e29816ab285bda80f5))\n* **providers:** canonicalize Azure assistant cache keys ([#8883](https://github.com/promptfoo/promptfoo/issues/8883)) ([c80f431](https://github.com/promptfoo/promptfoo/commit/c80f431f89847cbbff427441efa44957819ef582))\n* **redteam:** support remote input materialization ([#8863](https://github.com/promptfoo/promptfoo/issues/8863)) ([d89382e](https://github.com/promptfoo/promptfoo/commit/d89382ed3b9cce861a86622b55934f0004b75ce4))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/313435967/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/312305866","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/312305866/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/312305866/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.7","id":312305866,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4SnWjK","tag_name":"0.121.7","target_commitish":"a2c8e4691a68df7c9b7951ae747dc61c14b19d30","name":"0.121.7","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-22T15:33:27Z","updated_at":"2026-04-22T15:33:43Z","published_at":"2026-04-22T15:33:43Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.7","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.7","body":"## [0.121.7](https://github.com/promptfoo/promptfoo/compare/0.121.6...0.121.7) (2026-04-22)\n\n\n### Features\n\n* add promptfoo codex skills ([#8790](https://github.com/promptfoo/promptfoo/issues/8790)) ([d794c0d](https://github.com/promptfoo/promptfoo/commit/d794c0d3e2e3aa917882df97fd5d74492aaa89b5))\n* harmbench plugin filter by category ([#8827](https://github.com/promptfoo/promptfoo/issues/8827)) ([73533f4](https://github.com/promptfoo/promptfoo/commit/73533f4781f523043ce03c0ce7936d7355f9ef1f))\n* **openai:** add gpt-image-2 support ([#8835](https://github.com/promptfoo/promptfoo/issues/8835)) ([ac5ff4c](https://github.com/promptfoo/promptfoo/commit/ac5ff4cae8c901864f3fb840882653ec7a69f300))\n* **providers:** add google:embedding: AI Studio embeddings ([#8825](https://github.com/promptfoo/promptfoo/issues/8825)) ([cb67352](https://github.com/promptfoo/promptfoo/commit/cb673527298d3d74f93b3ac1c4c22f5d9a5abdd7))\n* **redteam:** add DOCX input wrapper generation ([#8506](https://github.com/promptfoo/promptfoo/issues/8506)) ([5bba957](https://github.com/promptfoo/promptfoo/commit/5bba9578492b26e48d09a8c8980d2e48e982086d))\n* **webui:** virtualize shared data tables ([#8537](https://github.com/promptfoo/promptfoo/issues/8537)) ([ae756c9](https://github.com/promptfoo/promptfoo/commit/ae756c90d6e32bcf1188327b06e88050a143fcd3))\n\n\n### Bug Fixes\n\n* **assertions:** support Vercel AI SDK tool-call spans ([#8800](https://github.com/promptfoo/promptfoo/issues/8800)) ([642e925](https://github.com/promptfoo/promptfoo/commit/642e925de3d70aff599fb969af88839835bab995))\n* **auth:** log file auth refresh lifecycle ([#8833](https://github.com/promptfoo/promptfoo/issues/8833)) ([0da6c6a](https://github.com/promptfoo/promptfoo/commit/0da6c6a1c2661409895e5c716f1b0550fea8baf3))\n* **cache:** hash mistral cache keys ([#8643](https://github.com/promptfoo/promptfoo/issues/8643)) ([869f98d](https://github.com/promptfoo/promptfoo/commit/869f98daea59a5718b019e582148dda572630d56))\n* **cache:** hash moderation cache inputs ([#8641](https://github.com/promptfoo/promptfoo/issues/8641)) ([2c36415](https://github.com/promptfoo/promptfoo/commit/2c364152c134e271cba5b2f374705e5bba910df7))\n* **cache:** hash replicate cache keys ([#8647](https://github.com/promptfoo/promptfoo/issues/8647)) ([495e09e](https://github.com/promptfoo/promptfoo/commit/495e09ed061da5c31027ef2ed70178f2c1986313))\n* **cache:** hash watsonx cache keys ([#8649](https://github.com/promptfoo/promptfoo/issues/8649)) ([1461b6f](https://github.com/promptfoo/promptfoo/commit/1461b6ffa225219e2582ded9ce619c135ee77800))\n* **cache:** isolate fetch cache by request identity ([e0da9dd](https://github.com/promptfoo/promptfoo/commit/e0da9dddefa0c3683c35f52ab4d00aa5a9581400))\n* **deps:** update DOMPurify to 3.4.1 ([#8844](https://github.com/promptfoo/promptfoo/issues/8844)) ([29045ed](https://github.com/promptfoo/promptfoo/commit/29045eddf9ce8cfe9251b9aa648bbba0ed34803d))\n* **deps:** update opentelemetry ([#8851](https://github.com/promptfoo/promptfoo/issues/8851)) ([4370216](https://github.com/promptfoo/promptfoo/commit/437021640e327688d966e21d279bd751ec336b4d))\n* **eval:** scope result ratings to eval ([33be399](https://github.com/promptfoo/promptfoo/commit/33be39997e84f0a13a36f67cde92d433865ab706))\n* **eval:** show rendered assertion values instead of raw templates in UI ([#7976](https://github.com/promptfoo/promptfoo/issues/7976)) ([dde71c9](https://github.com/promptfoo/promptfoo/commit/dde71c9856263677216a10ab4274de2d277ad246))\n* **providers:** convert OpenCode permissions to v2 PermissionRuleset ([#8808](https://github.com/promptfoo/promptfoo/issues/8808)) ([335149a](https://github.com/promptfoo/promptfoo/commit/335149acdc9313b7e5a8abfb667414621fb601b4))\n* **providers:** honor OpenRouter config overrides and refresh model references ([#8804](https://github.com/promptfoo/promptfoo/issues/8804)) ([432d1a8](https://github.com/promptfoo/promptfoo/commit/432d1a87b3b2b6490be9ee205c410747066cc814))\n* **redteam:** support named custom policy configs ([#8836](https://github.com/promptfoo/promptfoo/issues/8836)) ([b035d66](https://github.com/promptfoo/promptfoo/commit/b035d662f79cef93713c3bfbefd6f6e2c4ca85e4))\n* **server:** handle large eval table payloads ([#8745](https://github.com/promptfoo/promptfoo/issues/8745)) ([92d5929](https://github.com/promptfoo/promptfoo/commit/92d59297264b4b3e0ba66fc6cf49f3cbfa47c7c3))\n* **server:** redact route debug bodies ([#8639](https://github.com/promptfoo/promptfoo/issues/8639)) ([d160e4c](https://github.com/promptfoo/promptfoo/commit/d160e4cb47adb59d0f7e504baed83756081aba54))\n* **vertex:** align VertexEmbeddingProvider constructor with ProviderOptions ([#8843](https://github.com/promptfoo/promptfoo/issues/8843)) ([f29cfef](https://github.com/promptfoo/promptfoo/commit/f29cfefdbd3443e2b720e5ffd8b67e2cf40d72a0))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/312305866/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/311996675","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/311996675/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/311996675/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.6","id":311996675,"author":{"login":"mldangelo-oai","id":269034524,"node_id":"U_kgDOEAkkHA","avatar_url":"https://avatars.githubusercontent.com/u/269034524?v=4","gravatar_id":"","url":"https://api.github.com/users/mldangelo-oai","html_url":"https://github.com/mldangelo-oai","followers_url":"https://api.github.com/users/mldangelo-oai/followers","following_url":"https://api.github.com/users/mldangelo-oai/following{/other_user}","gists_url":"https://api.github.com/users/mldangelo-oai/gists{/gist_id}","starred_url":"https://api.github.com/users/mldangelo-oai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mldangelo-oai/subscriptions","organizations_url":"https://api.github.com/users/mldangelo-oai/orgs","repos_url":"https://api.github.com/users/mldangelo-oai/repos","events_url":"https://api.github.com/users/mldangelo-oai/events{/privacy}","received_events_url":"https://api.github.com/users/mldangelo-oai/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4SmLED","tag_name":"0.121.6","target_commitish":"74f0dd27dc52d0eadbd07871e7d27333dbe6b503","name":"0.121.6","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-18T15:41:02Z","updated_at":"2026-04-22T01:07:21Z","published_at":"2026-04-22T01:07:21Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.6","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.6","body":"## [0.121.6](https://github.com/promptfoo/promptfoo/compare/0.121.5...0.121.6) (2026-04-18)\n\n\n### Features\n\n* **anthropic:** add support for Claude Opus 4.7 ([#8763](https://github.com/promptfoo/promptfoo/issues/8763)) ([bcde21d](https://github.com/promptfoo/promptfoo/commit/bcde21d90731ca20781c3d7ebb34567de13e3044))\n* **claude-agent-sdk:** bump to 0.2.112 and expose exclude_dynamic_sections ([#8767](https://github.com/promptfoo/promptfoo/issues/8767)) ([7abb3b7](https://github.com/promptfoo/promptfoo/commit/7abb3b7640c734993d6d0670bb5b00eb62aa0051))\n* **cli:** add ModelAudit scanner selection ([#8778](https://github.com/promptfoo/promptfoo/issues/8778)) ([3dc603f](https://github.com/promptfoo/promptfoo/commit/3dc603f2dde9a695ab9762421929f103535351e1))\n* **eval:** add author option on evaluate() and align resolution with cloud identity ([#7760](https://github.com/promptfoo/promptfoo/issues/7760)) ([8cc8b7f](https://github.com/promptfoo/promptfoo/commit/8cc8b7f2312a1712c452481b5ec0781a9c1da9d5))\n* **eval:** persist namedScores and metadata from afterEach hook ([#7731](https://github.com/promptfoo/promptfoo/issues/7731)) ([6cff1b9](https://github.com/promptfoo/promptfoo/commit/6cff1b9ebaa8225bdd12fb6004297e23fb1b46aa))\n* **eval:** support inline function transforms via Node.js package ([#8441](https://github.com/promptfoo/promptfoo/issues/8441)) ([f0c702e](https://github.com/promptfoo/promptfoo/commit/f0c702ea8de80ec667f2f517eac8507657f56f90))\n* **examples:** support OpenAI Agents Python 0.14 ([#8762](https://github.com/promptfoo/promptfoo/issues/8762)) ([6181f2d](https://github.com/promptfoo/promptfoo/commit/6181f2d4344dca99bb3b98efdd872f9e581f6ec9))\n* **redteam:** add coding-agent all collection ([1228c05](https://github.com/promptfoo/promptfoo/commit/1228c0513ead1dfe638136a45812a25a5f6d7de5))\n* **redteam:** reapply next coding-agent plugins ([8304c7c](https://github.com/promptfoo/promptfoo/commit/8304c7cb0f431bae72d8451e7c913a5018f7b83d))\n* **tracing:** accept OTLP logs and render SDK-internal events as spans ([#8768](https://github.com/promptfoo/promptfoo/issues/8768)) ([20a9160](https://github.com/promptfoo/promptfoo/commit/20a9160e50ac94b304f6af0d672cc6be6add5d78))\n\n\n### Bug Fixes\n\n* **assertions:** handle empty g-eval criteria ([#8625](https://github.com/promptfoo/promptfoo/issues/8625)) ([6a0998b](https://github.com/promptfoo/promptfoo/commit/6a0998b9852a4002aeca0d410c3d391c8af17388))\n* **cache:** hash bedrock agent and kb keys ([#8651](https://github.com/promptfoo/promptfoo/issues/8651)) ([ba3dfbd](https://github.com/promptfoo/promptfoo/commit/ba3dfbd65c3f3ffbd27057c18c4781a10048ea63))\n* **cache:** hash fal cache keys ([#8645](https://github.com/promptfoo/promptfoo/issues/8645)) ([9ff2fe9](https://github.com/promptfoo/promptfoo/commit/9ff2fe93c80c4fa823ff169f61a4a71c842ba730))\n* **cache:** hash vercel cache keys ([#8650](https://github.com/promptfoo/promptfoo/issues/8650)) ([dcd926c](https://github.com/promptfoo/promptfoo/commit/dcd926c1a172ac02bc8862bb53a19caf3c491b90))\n* **code-scan:** resolve code scanning findings ([#8792](https://github.com/promptfoo/promptfoo/issues/8792)) ([66341af](https://github.com/promptfoo/promptfoo/commit/66341af2d64d9a5576360308f6aca0b287ddbc0f))\n* **eval:** detect _conversation references precisely ([4453b5b](https://github.com/promptfoo/promptfoo/commit/4453b5b1a57c921b5070034ecc0f7897bcceb004)), closes [#7845](https://github.com/promptfoo/promptfoo/issues/7845)\n* **eval:** handle empty array ([#8737](https://github.com/promptfoo/promptfoo/issues/8737)) ([1786713](https://github.com/promptfoo/promptfoo/commit/1786713863c1e5af872d526367fd95ac14b2e52d))\n* **eval:** harden grouped serial grading against edge cases ([#8783](https://github.com/promptfoo/promptfoo/issues/8783)) ([c5046bb](https://github.com/promptfoo/promptfoo/commit/c5046bba54cbf846ead5b38b1aa55abc540ce5b3))\n* **eval:** redact provider config secrets ([6007bdb](https://github.com/promptfoo/promptfoo/commit/6007bdbe2b3a7831b75193057efc6470fe4b2d3f))\n* **eval:** show chart unavailable reason on demand ([a2ebb0b](https://github.com/promptfoo/promptfoo/commit/a2ebb0b10afcb16efbc9e6f978eaaab60e521e92))\n* **examples:** update temperature comparison to reasoning comparison ([#7429](https://github.com/promptfoo/promptfoo/issues/7429)) ([7301137](https://github.com/promptfoo/promptfoo/commit/73011375697348a2a8e6824a0dbea90c4843e039))\n* **providers:** forward config.env and emit tool spans for claude-agent-sdk ([#8764](https://github.com/promptfoo/promptfoo/issues/8764)) ([ce71283](https://github.com/promptfoo/promptfoo/commit/ce712831580be870dd509adccb1d3181c14d7f58))\n* **providers:** preserve OpenClaw agent write scopes ([#8742](https://github.com/promptfoo/promptfoo/issues/8742)) ([d6feca2](https://github.com/promptfoo/promptfoo/commit/d6feca20d1c76ddd77dfbae493c1e5d009b7b4ae))\n* **providers:** support separate input/output token cost overrides ([#8254](https://github.com/promptfoo/promptfoo/issues/8254)) ([5102d05](https://github.com/promptfoo/promptfoo/commit/5102d0510cee4ad7a32f6a9310c1bc5f59919502))\n* **redteam:** block file:// candidate prompts in best-of-n ([9293d31](https://github.com/promptfoo/promptfoo/commit/9293d314976bb3436b106c778f05fc8655ca865f))\n* **redteam:** distinguish missing cross-session leak metadata in grader output ([#8781](https://github.com/promptfoo/promptfoo/issues/8781)) ([d5f1966](https://github.com/promptfoo/promptfoo/commit/d5f1966fd6b3d0294d43ec8e2af4942cf05a1fee))\n* **redteam:** guard verifier artifact file reads ([#8629](https://github.com/promptfoo/promptfoo/issues/8629)) ([277c32a](https://github.com/promptfoo/promptfoo/commit/277c32a29087bafb4e25dd9f2cd85dfa3feec781))\n* **redteam:** prevent GOAT attacker file dereference ([207bb82](https://github.com/promptfoo/promptfoo/commit/207bb82ad030dd68167945601e6ba58fe8903a0d))\n* **redteam:** redact gcg generation logs ([#8659](https://github.com/promptfoo/promptfoo/issues/8659)) ([eced841](https://github.com/promptfoo/promptfoo/commit/eced841def752053d7fcf32ee06c5b2b035a89dd))\n* **redteam:** scope generated vulnerability report context ([#8706](https://github.com/promptfoo/promptfoo/issues/8706)) ([ff66227](https://github.com/promptfoo/promptfoo/commit/ff66227ab77f803fd39f5cdf975d350a575b7fa4))\n* **redteam:** standardize remote generation error messages with actionable recovery steps ([#8491](https://github.com/promptfoo/promptfoo/issues/8491)) ([bd7bf9e](https://github.com/promptfoo/promptfoo/commit/bd7bf9e4ff7083f2aefc73debffc3b15e569390e))\n* **scheduler:** honor provider maxRetries across retry layers ([#8772](https://github.com/promptfoo/promptfoo/issues/8772)) ([63e59a0](https://github.com/promptfoo/promptfoo/commit/63e59a072d77f5091cca00d4d04e3bf47f7c77e4))\n* **traces:** redact read attributes ([#8664](https://github.com/promptfoo/promptfoo/issues/8664)) ([edc6c61](https://github.com/promptfoo/promptfoo/commit/edc6c618d1fb13f8565d212608eb5032638959f9))\n* **webui:** pin eval results footer for short tables ([#8716](https://github.com/promptfoo/promptfoo/issues/8716)) ([7b2eb8c](https://github.com/promptfoo/promptfoo/commit/7b2eb8c05b6affd6991bdb95b19b62a5d282854d))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/311996675/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/309052414","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/309052414/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/309052414/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.5","id":309052414,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Sa8P-","tag_name":"0.121.5","target_commitish":"7b078ebeaffc3a73108966a8699c703acc6c6e3b","name":"0.121.5","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-14T20:56:56Z","updated_at":"2026-04-14T20:57:20Z","published_at":"2026-04-14T20:57:13Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.5","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.5","body":"## [0.121.5](https://github.com/promptfoo/promptfoo/compare/0.121.4...0.121.5) (2026-04-14)\n\n\n### Features\n\n* **providers:** add Abliteration provider ([b29fa9a](https://github.com/promptfoo/promptfoo/commit/b29fa9a475315cc97d57a5616d08e9b099d8f66b))\n* **providers:** add OpenAI Codex app-server provider ([#8578](https://github.com/promptfoo/promptfoo/issues/8578)) ([a403dd1](https://github.com/promptfoo/promptfoo/commit/a403dd17b012029bbd4323e3d95e44e5366d08a3))\n* **providers:** let anthropic:messages auth via Claude Code session ([#8692](https://github.com/promptfoo/promptfoo/issues/8692)) ([642af70](https://github.com/promptfoo/promptfoo/commit/642af7060cce97885133c8729672c2ec5eed42ac))\n* **webui:** add system theme selector ([#8538](https://github.com/promptfoo/promptfoo/issues/8538)) ([2ed5e5b](https://github.com/promptfoo/promptfoo/commit/2ed5e5b263049daad98b0ddc45674e2d29c194ee))\n\n\n### Bug Fixes\n\n* **app:** chart toggle visibility ([#8439](https://github.com/promptfoo/promptfoo/issues/8439)) ([f9d448d](https://github.com/promptfoo/promptfoo/commit/f9d448dd74dbe6542a9c4ce7282dc0f85df42159))\n* **assertions:** avoid jsdom in HTML assertions ([979aee4](https://github.com/promptfoo/promptfoo/commit/979aee484b2bba62fc9aed821f00dcb44e0ca8c7))\n* correct rouge assertion reason messages when inverse: true ([#8682](https://github.com/promptfoo/promptfoo/issues/8682)) ([7d64d8d](https://github.com/promptfoo/promptfoo/commit/7d64d8daedaaac7c84b421046cdc3d85959870e8))\n* **deps:** update anthropic packages ([#8670](https://github.com/promptfoo/promptfoo/issues/8670)) ([0a4a7e0](https://github.com/promptfoo/promptfoo/commit/0a4a7e08075eaaa9f3605018da01fd7a41216f2f))\n* **deps:** update dependency openai to ^6.34.0 ([#8701](https://github.com/promptfoo/promptfoo/issues/8701)) ([73f6ba1](https://github.com/promptfoo/promptfoo/commit/73f6ba19bccae06aeafd6b702df26d4f9f6dc4bd))\n* **deps:** update dependency parse5 to v8 ([#8710](https://github.com/promptfoo/promptfoo/issues/8710)) ([759391d](https://github.com/promptfoo/promptfoo/commit/759391d6ea3e3639071e257c55e65105c077935d))\n* **deps:** update openai packages ([#8672](https://github.com/promptfoo/promptfoo/issues/8672)) ([1ae735c](https://github.com/promptfoo/promptfoo/commit/1ae735c8a9f2d7b7d62453f9c195cd691ff561b5))\n* **providers:** close stdin on exec provider to prevent child process hanging ([#8686](https://github.com/promptfoo/promptfoo/issues/8686)) ([9cd7709](https://github.com/promptfoo/promptfoo/commit/9cd7709d19fa8c85c97a402400d0f7cbb8a1762e))\n* **providers:** resolve settings file path for claude-agent-sdk ([#8606](https://github.com/promptfoo/promptfoo/issues/8606)) ([d575bd1](https://github.com/promptfoo/promptfoo/commit/d575bd1fc13809428216d1c2de1ea59249c19005))\n* **providers:** send reasoning config for Azure responses deployments ([#8255](https://github.com/promptfoo/promptfoo/issues/8255)) ([67437f3](https://github.com/promptfoo/promptfoo/commit/67437f3fc02c320dc3ea29c99ea69e6334cb3b2b))\n* **redteam:** throw immediately on non-OK HTTP responses in redteam discover ([#8677](https://github.com/promptfoo/promptfoo/issues/8677)) ([770a557](https://github.com/promptfoo/promptfoo/commit/770a557b2687a0ba10384d64420257d18677086e))\n* **server:** prevent circular JSON when Bedrock/Anthropic provider is used as llm-rubric judge from web UI ([#8688](https://github.com/promptfoo/promptfoo/issues/8688)) ([f26e54b](https://github.com/promptfoo/promptfoo/commit/f26e54b99a6c002a819e13cf6738f9c748062da5))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/309052419","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/309052419/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/309052419/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/code-scan-action-0.1.5","id":309052419,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Sa8QD","tag_name":"code-scan-action-0.1.5","target_commitish":"7b078ebeaffc3a73108966a8699c703acc6c6e3b","name":"code-scan-action: v0.1.5","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-14T20:56:56Z","updated_at":"2026-04-14T20:57:14Z","published_at":"2026-04-14T20:57:14Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/code-scan-action-0.1.5","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/code-scan-action-0.1.5","body":"## [0.1.5](https://github.com/promptfoo/promptfoo/compare/code-scan-action-0.1.4...code-scan-action-0.1.5) (2026-04-14)\n\n\n### Bug Fixes\n\n* **app:** clarify attack success rate label ([#8387](https://github.com/promptfoo/promptfoo/issues/8387)) ([7482eff](https://github.com/promptfoo/promptfoo/commit/7482eff88f193e857822b43da040638eb4ae1565))\n* **code-scan:** avoid npm before env for MCP npx ([#8515](https://github.com/promptfoo/promptfoo/issues/8515)) ([7d2eacd](https://github.com/promptfoo/promptfoo/commit/7d2eacd7820a33de24f8253b1ebe14e23b25faf1))\n* **deps:** update dependency undici to ^7.24.5 ([#8411](https://github.com/promptfoo/promptfoo/issues/8411)) ([3d8a24d](https://github.com/promptfoo/promptfoo/commit/3d8a24dcdb06cc729cc9b4d94f7b3f8763d03b9a))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/309052419/reactions","total_count":4,"+1":3,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":1,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/307771602","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/307771602/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/307771602/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.4","id":307771602,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4SWDjS","tag_name":"0.121.4","target_commitish":"c651d4e748274dd4567dac4f13ccb9c26071844d","name":"0.121.4","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-04-11T00:31:23Z","updated_at":"2026-04-11T00:31:45Z","published_at":"2026-04-11T00:31:40Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.4","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.4","body":"## [0.121.4](https://github.com/promptfoo/promptfoo/compare/0.121.3...0.121.4) (2026-04-10)\n\n\n### Features\n\n* allow per-test opt-out of defaultTest assertions ([5e5959e](https://github.com/promptfoo/promptfoo/commit/5e5959ecc6984fe34df0c3fa74aa231fdc9ea972))\n* **codex:** expand Codex SDK eval controls and docs ([#8433](https://github.com/promptfoo/promptfoo/issues/8433)) ([80c3f7f](https://github.com/promptfoo/promptfoo/commit/80c3f7f25431e7a6319df54b46b4cd283f4b6b8c))\n* **eval:** group serial grading by provider ([#8509](https://github.com/promptfoo/promptfoo/issues/8509)) ([d289602](https://github.com/promptfoo/promptfoo/commit/d289602becd76fa80b10e6896756877edd730d6a))\n* **examples:** add traced openai agents python sdk example ([#8354](https://github.com/promptfoo/promptfoo/issues/8354)) ([6870717](https://github.com/promptfoo/promptfoo/commit/6870717cd4594f206b2f53e244fce75335ae9992))\n* **http:** support structured multipart requests ([#8533](https://github.com/promptfoo/promptfoo/issues/8533)) ([5bac47c](https://github.com/promptfoo/promptfoo/commit/5bac47c0393ef7b2d89d6f9073eb0b63e3c5ffba))\n* japan fiea plugin ([#8316](https://github.com/promptfoo/promptfoo/issues/8316)) ([f330ab3](https://github.com/promptfoo/promptfoo/commit/f330ab391b44e8b29acd1cb9dd7b415ebe6c202a))\n* **matchers:** expose grading provider metadata in GradingResult ([#8330](https://github.com/promptfoo/promptfoo/issues/8330)) ([03cbac6](https://github.com/promptfoo/promptfoo/commit/03cbac6f5e4141372a399a07ab907c20a182993f))\n* **openai:** enable chatgpt login via codex ([#8327](https://github.com/promptfoo/promptfoo/issues/8327)) ([5a9cb96](https://github.com/promptfoo/promptfoo/commit/5a9cb9689b2b2b84d751fabeae19460cee9f6aad))\n* **providers:** add Gemma 4 provider support ([#8454](https://github.com/promptfoo/promptfoo/issues/8454)) ([b0667ed](https://github.com/promptfoo/promptfoo/commit/b0667ed5460570261dcf27dc7cdda87d474eb198))\n* **providers:** add missing Anthropic SDK features and fix apiKeyRequired bug ([#8351](https://github.com/promptfoo/promptfoo/issues/8351)) ([3060847](https://github.com/promptfoo/promptfoo/commit/30608476af1ca322968280720996022de5db20b1))\n* **providers:** expand OpenClaw support ([#8589](https://github.com/promptfoo/promptfoo/issues/8589)) ([93f29ec](https://github.com/promptfoo/promptfoo/commit/93f29ec55e70dd4ab91b7c467de158dfdf5f9e5c))\n* **providers:** support Codex local images and harden SDK ([929790b](https://github.com/promptfoo/promptfoo/commit/929790bdf1fee83d1a9568e1d6c7309a4805dc4f))\n* **providers:** support multimodal openai agents input ([#8397](https://github.com/promptfoo/promptfoo/issues/8397)) ([4065844](https://github.com/promptfoo/promptfoo/commit/4065844369ac3fe68fc0cadb22b3f19311a6ec76))\n* **redteam:** add coding-agent redteam plugins ([85a0cfe](https://github.com/promptfoo/promptfoo/commit/85a0cfee367b9b55b4a53e2cf42753f76c1be2c9))\n* **redteam:** add FDA medical plugins ([#8456](https://github.com/promptfoo/promptfoo/issues/8456)) ([30e4ac3](https://github.com/promptfoo/promptfoo/commit/30e4ac322753e665105ed930884e60a8a28515c5))\n* **redteam:** add next coding-agent plugins ([5ab3ba4](https://github.com/promptfoo/promptfoo/commit/5ab3ba4ed829b36063c9b3892f8921a1a1a58929))\n* **redteam:** add teen safety plugins ([#8308](https://github.com/promptfoo/promptfoo/issues/8308)) ([61aa057](https://github.com/promptfoo/promptfoo/commit/61aa057c3e67007920a81ac093ea07a5908302f3))\n* **redteam:** enforce max chars per message ([#8428](https://github.com/promptfoo/promptfoo/issues/8428)) ([9af7b7d](https://github.com/promptfoo/promptfoo/commit/9af7b7da5e96b5625defc2223cc777e6aa867829))\n* **redteam:** use Codex login for default text graders ([#8493](https://github.com/promptfoo/promptfoo/issues/8493)) ([9a6b61b](https://github.com/promptfoo/promptfoo/commit/9a6b61b42b3ae39bf6c871166d49ceabeb1584e5))\n\n\n### Bug Fixes\n\n* **app:** clarify attack success rate label ([#8386](https://github.com/promptfoo/promptfoo/issues/8386)) ([d088eac](https://github.com/promptfoo/promptfoo/commit/d088eacd5d2aec073bfd8cc99e607ad39d88a8dc))\n* **app:** clarify attack success rate label ([#8387](https://github.com/promptfoo/promptfoo/issues/8387)) ([7482eff](https://github.com/promptfoo/promptfoo/commit/7482eff88f193e857822b43da040638eb4ae1565))\n* **app:** keep select-all checkbox visible ([#8549](https://github.com/promptfoo/promptfoo/issues/8549)) ([02f9064](https://github.com/promptfoo/promptfoo/commit/02f90644dff71666bce420888ecd71b27ed521ad))\n* **assertions:** apply weights to named scores in assertion results ([#8206](https://github.com/promptfoo/promptfoo/issues/8206)) ([01da019](https://github.com/promptfoo/promptfoo/commit/01da019daf9e414b8517383cd83e9b6f7800290d))\n* **assertions:** handle inverse flag in finish-reason handler ([#8556](https://github.com/promptfoo/promptfoo/issues/8556)) ([7155f28](https://github.com/promptfoo/promptfoo/commit/7155f28fb755b81535dbcdacfb76f49791a515b0))\n* **assertions:** normalize javascript function assertion results ([#8377](https://github.com/promptfoo/promptfoo/issues/8377)) ([a7fafba](https://github.com/promptfoo/promptfoo/commit/a7fafbaaa7dd59b47651ead53f03a5b277c1df1c))\n* **assertions:** normalize negated script assertions ([#8485](https://github.com/promptfoo/promptfoo/issues/8485)) ([fe62243](https://github.com/promptfoo/promptfoo/commit/fe622433c4174dd1e1e8e00d41ee4cf0350273a4))\n* **assertions:** preserve nested metric weights ([#8558](https://github.com/promptfoo/promptfoo/issues/8558)) ([f3c173d](https://github.com/promptfoo/promptfoo/commit/f3c173dc6dc285084ed567436900decf8df6935b))\n* **assertions:** resolve search-rubric web providers ([#8557](https://github.com/promptfoo/promptfoo/issues/8557)) ([af751aa](https://github.com/promptfoo/promptfoo/commit/af751aaed138592387c0bfc6e4d7c99133f3976f))\n* **assertions:** skip simulated-user as implicit grader ([#8429](https://github.com/promptfoo/promptfoo/issues/8429)) ([9bc5fdf](https://github.com/promptfoo/promptfoo/commit/9bc5fdff643245d898185fc5784466cbf5e1ed55))\n* **auth:** honour org flag in login command ([#8430](https://github.com/promptfoo/promptfoo/issues/8430)) ([8bdb15d](https://github.com/promptfoo/promptfoo/commit/8bdb15d49a1fc729dbdbaf6fadd4f0471fefe171))\n* **bedrock:** preserve zero-valued inference config ([#8272](https://github.com/promptfoo/promptfoo/issues/8272)) ([1cd397e](https://github.com/promptfoo/promptfoo/commit/1cd397e636a2bc9972ca01353facd080da51f868))\n* **browser:** make stealth plugin install explicit ([#8434](https://github.com/promptfoo/promptfoo/issues/8434)) ([aa72a34](https://github.com/promptfoo/promptfoo/commit/aa72a342d084b0ff977ca37f8e6281df1eadbef0))\n* **cache:** cache repeated evals by repeat index ([#8480](https://github.com/promptfoo/promptfoo/issues/8480)) ([fbd59a6](https://github.com/promptfoo/promptfoo/commit/fbd59a6cf8102788e149d29e055b430fb62d7153))\n* **cli:** enforce exact Node engine range ([#8380](https://github.com/promptfoo/promptfoo/issues/8380)) ([1f8e3b4](https://github.com/promptfoo/promptfoo/commit/1f8e3b41a502ead888daa7c5972ab121be8d6a34))\n* **cli:** serialize source-map support initialization ([#8401](https://github.com/promptfoo/promptfoo/issues/8401)) ([d4a9d4a](https://github.com/promptfoo/promptfoo/commit/d4a9d4a12b56ae0c761f1d2f040658e092fe26d9))\n* **code-scan:** avoid npm before env for MCP npx ([#8515](https://github.com/promptfoo/promptfoo/issues/8515)) ([7d2eacd](https://github.com/promptfoo/promptfoo/commit/7d2eacd7820a33de24f8253b1ebe14e23b25faf1))\n* **code-scan:** retry scanner MCP request timeouts ([#8545](https://github.com/promptfoo/promptfoo/issues/8545)) ([4312797](https://github.com/promptfoo/promptfoo/commit/43127970eb68537538d22bb22d184d66ab5852ee))\n* **deps:** pin claude-agent-sdk lockfile to 0.2.87 ([#8400](https://github.com/promptfoo/promptfoo/issues/8400)) ([cbfb91a](https://github.com/promptfoo/promptfoo/commit/cbfb91a99cb3cd22a5ddaab2496ad392f7cefa1c))\n* **deps:** update dependency @anthropic-ai/sdk to ^0.82.0 ([#8510](https://github.com/promptfoo/promptfoo/issues/8510)) ([cbc96df](https://github.com/promptfoo/promptfoo/commit/cbc96df3b93627832cd8aea7cfe5f320d845929f))\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.28.0 ([416f3cd](https://github.com/promptfoo/promptfoo/commit/416f3cd94b0275a4e0b715d081dfb4c46eb74c33))\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.28.0 ([5a8a732](https://github.com/promptfoo/promptfoo/commit/5a8a73254835426e29c0cf4d5345f1d8666d05ca))\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.29.0 ([#8501](https://github.com/promptfoo/promptfoo/issues/8501)) ([8821383](https://github.com/promptfoo/promptfoo/commit/8821383d30ab11cf0d57cd2e2a3fd1c09d52270c))\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.29.0 ([#8502](https://github.com/promptfoo/promptfoo/issues/8502)) ([84db2aa](https://github.com/promptfoo/promptfoo/commit/84db2aa1db0b0e6da90622641d2b761e2dc997e0))\n* **deps:** update dependency @openai/agents to ^0.8.1 ([#8371](https://github.com/promptfoo/promptfoo/issues/8371)) ([3f2234c](https://github.com/promptfoo/promptfoo/commit/3f2234cd8a1af3ea9e0b5a7832811f902c021613))\n* **deps:** update dependency @openai/agents to ^0.8.1 ([#8372](https://github.com/promptfoo/promptfoo/issues/8372)) ([aecdb11](https://github.com/promptfoo/promptfoo/commit/aecdb11ae6899566cab3aea0cf066e4a37ad8efd))\n* **deps:** update dependency @openai/agents to ^0.8.2 ([#8500](https://github.com/promptfoo/promptfoo/issues/8500)) ([2b2ce6c](https://github.com/promptfoo/promptfoo/commit/2b2ce6c0de503f33f952ee49d50e56342a67cfa2))\n* **deps:** update dependency @opentelemetry/exporter-trace-otlp-http to ^0.214.0 ([#8379](https://github.com/promptfoo/promptfoo/issues/8379)) ([462f1e5](https://github.com/promptfoo/promptfoo/commit/462f1e57f1b35163f775d755aeb43036b8360b0d))\n* **deps:** update dependency ai to ^6.0.138 ([#8403](https://github.com/promptfoo/promptfoo/issues/8403)) ([855e6b3](https://github.com/promptfoo/promptfoo/commit/855e6b35ac227a37d3defd4c3384b71aa55e91a3))\n* **deps:** update dependency ai to ^6.0.138 ([#8410](https://github.com/promptfoo/promptfoo/issues/8410)) ([4aa56cf](https://github.com/promptfoo/promptfoo/commit/4aa56cf2108933960043cf59d9fc1e09392c0dd7))\n* **deps:** update dependency openai to ^6.33.0 ([#8388](https://github.com/promptfoo/promptfoo/issues/8388)) ([19e04ce](https://github.com/promptfoo/promptfoo/commit/19e04cef787f9c48e1f4496f8814927868aac951))\n* **deps:** update dependency proxy-agent to v8 ([#8503](https://github.com/promptfoo/promptfoo/issues/8503)) ([52953a6](https://github.com/promptfoo/promptfoo/commit/52953a68cda861a037fd12f1d1b34871f3f38ae5))\n* **deps:** update dependency undici to ^7.24.5 ([#8411](https://github.com/promptfoo/promptfoo/issues/8411)) ([3d8a24d](https://github.com/promptfoo/promptfoo/commit/3d8a24dcdb06cc729cc9b4d94f7b3f8763d03b9a))\n* **deps:** update example dependencies ([#8367](https://github.com/promptfoo/promptfoo/issues/8367)) ([977a656](https://github.com/promptfoo/promptfoo/commit/977a65673b31150da396d21cc8389282290af822))\n* **deps:** update IBM Cloud SDK Core ([#8584](https://github.com/promptfoo/promptfoo/issues/8584)) ([07aaf97](https://github.com/promptfoo/promptfoo/commit/07aaf9747517c613b6b81f939d7202ecd44b3e19))\n* **deps:** update openai packages ([#8368](https://github.com/promptfoo/promptfoo/issues/8368)) ([e5b842a](https://github.com/promptfoo/promptfoo/commit/e5b842afb768200e13e27ab2f746185886fdb4ed))\n* **elevenlabs:** Disable implicit retries for POST calls ([#8541](https://github.com/promptfoo/promptfoo/issues/8541)) ([34f819a](https://github.com/promptfoo/promptfoo/commit/34f819a0c1ff3a72ced3e610a1e888f587bd44a1))\n* **elevenlabs:** preserve explicit zero retries ([#8358](https://github.com/promptfoo/promptfoo/issues/8358)) ([493ef88](https://github.com/promptfoo/promptfoo/commit/493ef88582a20021b50c5f25fee671188dc2f2e3))\n* **eval:** fix bugs and performance issues in evaluator orchestrator ([#8481](https://github.com/promptfoo/promptfoo/issues/8481)) ([36a2788](https://github.com/promptfoo/promptfoo/commit/36a278842b8c0cfe63df7a8b8173b6e32f293a54))\n* G-Eval wrong scoring for negative criteria ([#8259](https://github.com/promptfoo/promptfoo/issues/8259)) ([e7bba6e](https://github.com/promptfoo/promptfoo/commit/e7bba6e6475e26c85bac7465ddb9ce8c8510bef3))\n* handle generated redteam exports during eval ([#8301](https://github.com/promptfoo/promptfoo/issues/8301)) ([ef3f67f](https://github.com/promptfoo/promptfoo/commit/ef3f67fda1bc782c56267211b1c94de835c4c25a))\n* harden object guards in comparison checks ([#8408](https://github.com/promptfoo/promptfoo/issues/8408)) ([6e81cc9](https://github.com/promptfoo/promptfoo/commit/6e81cc97f93b74fd3eb0bd58bf33096cdd61e963))\n* image should preserve aspect ratio in results table ([#8279](https://github.com/promptfoo/promptfoo/issues/8279)) ([e96d630](https://github.com/promptfoo/promptfoo/commit/e96d63012d1aec3bba8599383f824f953c3db920))\n* **mcp:** preserve falsy values and bound truncation ([#8423](https://github.com/promptfoo/promptfoo/issues/8423)) ([384249e](https://github.com/promptfoo/promptfoo/commit/384249edc6dcdbe12971becb4ad7a4c81e74c513))\n* **mcp:** stabilize withTimeout timeout handling ([#8399](https://github.com/promptfoo/promptfoo/issues/8399)) ([df7d8a9](https://github.com/promptfoo/promptfoo/commit/df7d8a926e15fe5df59beaf5b4ef55fd5400cf48))\n* **openai:** Avoid invalid realtime zero output tokens ([#8543](https://github.com/promptfoo/promptfoo/issues/8543)) ([9cde9b4](https://github.com/promptfoo/promptfoo/commit/9cde9b4d4aaa783b3089d0fb6fabd74d5b1550e4))\n* **openai:** preserve agents zero token usage ([#8283](https://github.com/promptfoo/promptfoo/issues/8283)) ([6354f4e](https://github.com/promptfoo/promptfoo/commit/6354f4ede7731b3cfd701923bfefd345fc5e2f91))\n* **openai:** preserve assistant temperature zero ([#8271](https://github.com/promptfoo/promptfoo/issues/8271)) ([311c0a4](https://github.com/promptfoo/promptfoo/commit/311c0a495cd74c45746d61eef9d570de81ed7d1b))\n* parse rate-limit reset headers ([#8341](https://github.com/promptfoo/promptfoo/issues/8341)) ([985ab28](https://github.com/promptfoo/promptfoo/commit/985ab289f819f75eb0cfe20834aff8b6bd1629d0))\n* preserve configured plugin config in strategy preview ([#8326](https://github.com/promptfoo/promptfoo/issues/8326)) ([e20458e](https://github.com/promptfoo/promptfoo/commit/e20458e40dda88e240aa23f440ed548f487fb091))\n* prevent SSTI in conversation-relevance assertion ([#8258](https://github.com/promptfoo/promptfoo/issues/8258)) ([49cbe41](https://github.com/promptfoo/promptfoo/commit/49cbe4178f87b70ea2429a620f14f6598b074c99))\n* **prompts:** skip recursive rendering for undefined vars ([#8394](https://github.com/promptfoo/promptfoo/issues/8394)) ([8f14e8d](https://github.com/promptfoo/promptfoo/commit/8f14e8dfa6164f02bd3a1270e2d64d6f48939d91))\n* **providers:** align omitDefaults handling across OpenAI and Azure ([#8332](https://github.com/promptfoo/promptfoo/issues/8332)) ([edb5db6](https://github.com/promptfoo/promptfoo/commit/edb5db631842108b914e7c16f984d24c2bf9feec))\n* **providers:** deduplicate token refresh retries ([#8421](https://github.com/promptfoo/promptfoo/issues/8421)) ([b78ea03](https://github.com/promptfoo/promptfoo/commit/b78ea0325b451d8f7c73dba3460ea3c46285988b))\n* **providers:** include azure moderation config in cache key ([#8349](https://github.com/promptfoo/promptfoo/issues/8349)) ([c528c5a](https://github.com/promptfoo/promptfoo/commit/c528c5a055d07046720a50df949aec0e84436326))\n* **providers:** preserve explicit zero values in Mistral, AI21, and Azure Assistant config ([#8555](https://github.com/promptfoo/promptfoo/issues/8555)) ([7612368](https://github.com/promptfoo/promptfoo/commit/7612368ad4557b1a2fa99147d8d304d7eb54c1b2))\n* **providers:** prevent max_tokens leaking via passthrough in multi-provider eval ([#8449](https://github.com/promptfoo/promptfoo/issues/8449)) ([b07ca39](https://github.com/promptfoo/promptfoo/commit/b07ca3972f624aff4b2335ea3ec824de7997afcf))\n* **providers:** support systemInstruction for Vertex Claude models ([#8522](https://github.com/promptfoo/promptfoo/issues/8522)) ([ff1cf68](https://github.com/promptfoo/promptfoo/commit/ff1cf6818c0ad1c7384c53bf331cfbe33961f175))\n* **providers:** support transitive TypeScript provider imports ([#8445](https://github.com/promptfoo/promptfoo/issues/8445)) ([1bb0f39](https://github.com/promptfoo/promptfoo/commit/1bb0f39911f07ebbc27a500b73da09343e30bfdf))\n* **providers:** use apiKeyEnvar in error messages across OpenAI providers ([#8180](https://github.com/promptfoo/promptfoo/issues/8180)) ([7008087](https://github.com/promptfoo/promptfoo/commit/70080873e2ffefbed7801ceea76964ec03d12474))\n* **providers:** use rendered prompt in simulated user ([#8363](https://github.com/promptfoo/promptfoo/issues/8363)) ([1f1fa86](https://github.com/promptfoo/promptfoo/commit/1f1fa86bb7a297b9e4492c64d4f8d9d1423f6a74))\n* **redteam:** avoid nested buttons in transform dialog ([#8520](https://github.com/promptfoo/promptfoo/issues/8520)) ([50c65b4](https://github.com/promptfoo/promptfoo/commit/50c65b44d9c1f13962a0f5cf5c8c28e7846e1570))\n* **redteam:** clarify remote generation guidance ([#8252](https://github.com/promptfoo/promptfoo/issues/8252)) ([45870ab](https://github.com/promptfoo/promptfoo/commit/45870ab7541d81d3e5d1ec88cb2514076eed0999))\n* **redteam:** fix --env-file arg parsing and test flakiness ([#8420](https://github.com/promptfoo/promptfoo/issues/8420)) ([6a920c5](https://github.com/promptfoo/promptfoo/commit/6a920c54ebc75b07154014d11cd882efb276443a))\n* **redteam:** guard missing cross-session leak metadata ([#8238](https://github.com/promptfoo/promptfoo/issues/8238)) ([9924bae](https://github.com/promptfoo/promptfoo/commit/9924bae124947d158151d991370017fba58768fe))\n* **redteam:** honour generate concurrency config ([#8463](https://github.com/promptfoo/promptfoo/issues/8463)) ([e626ea9](https://github.com/promptfoo/promptfoo/commit/e626ea96f8a530fc21ddb957e00fb0ad9a1da52d))\n* **redteam:** normalize code editor imports ([#8306](https://github.com/promptfoo/promptfoo/issues/8306)) ([057f9e0](https://github.com/promptfoo/promptfoo/commit/057f9e02fd4bb1b5914212b4d5fb6b46877b4a90))\n* **redteam:** pass full conversation history to crescendo grader ([#8239](https://github.com/promptfoo/promptfoo/issues/8239)) ([01619a8](https://github.com/promptfoo/promptfoo/commit/01619a8b186334c2140b262df75a4fd22d042dcf))\n* **redteam:** preserve goat zero max turns ([#8294](https://github.com/promptfoo/promptfoo/issues/8294)) ([3077acf](https://github.com/promptfoo/promptfoo/commit/3077acfb9521bacf9b7966fb423c320ba5733533))\n* **redteam:** preserve voice crescendo zero max turns ([#8310](https://github.com/promptfoo/promptfoo/issues/8310)) ([5d38b28](https://github.com/promptfoo/promptfoo/commit/5d38b28d3bb5ac88d109b0e38547801dd67fa221))\n* **redteam:** preserve zero prompt injection sample ([#8291](https://github.com/promptfoo/promptfoo/issues/8291)) ([16b3221](https://github.com/promptfoo/promptfoo/commit/16b32218a1e8dd9d7b3ec1c3d51605bb8c8849f5))\n* **redteam:** preserve zero-valued crescendo config ([#8273](https://github.com/promptfoo/promptfoo/issues/8273)) ([9ec66b5](https://github.com/promptfoo/promptfoo/commit/9ec66b5370d6aa6562cdea942ddbc587af8c14e6))\n* **redteam:** preserve zero-valued custom config ([#8274](https://github.com/promptfoo/promptfoo/issues/8274)) ([a76058f](https://github.com/promptfoo/promptfoo/commit/a76058f68959d0c372317f6be7c4794784e231d6))\n* **redteam:** preserve zero-valued voice crescendo config ([#8270](https://github.com/promptfoo/promptfoo/issues/8270)) ([7d36044](https://github.com/promptfoo/promptfoo/commit/7d360449de27ad8ece7eb930018ec3455e490182))\n* **redteam:** remove dead stores and preserve metadata ([#8407](https://github.com/promptfoo/promptfoo/issues/8407)) ([28d3383](https://github.com/promptfoo/promptfoo/commit/28d33836a27d3f4ac627d4ae132b1c8853a6b4b5))\n* **redteam:** skip unblocking feature checks when disabled ([#8266](https://github.com/promptfoo/promptfoo/issues/8266)) ([c6bdf39](https://github.com/promptfoo/promptfoo/commit/c6bdf39f11ffe2012bb5003c0d8a9f4c2ab6293f))\n* **redteam:** support policy multi-input generation ([#8320](https://github.com/promptfoo/promptfoo/issues/8320)) ([be14251](https://github.com/promptfoo/promptfoo/commit/be142518174fad79beb7b2335b47268cdf12f47c))\n* refresh prompt listings after prompt metadata updates ([#8120](https://github.com/promptfoo/promptfoo/issues/8120)) ([85694e9](https://github.com/promptfoo/promptfoo/commit/85694e9da78530428f0375d142f31d0e8e3fbae6))\n* replace undeclared tiny-invariant imports in app ([#8309](https://github.com/promptfoo/promptfoo/issues/8309)) ([f85704f](https://github.com/promptfoo/promptfoo/commit/f85704f428a948fb8936d6203e8f58dc0fe830c5))\n* **replicate:** cache string responses ([#8353](https://github.com/promptfoo/promptfoo/issues/8353)) ([e96fc94](https://github.com/promptfoo/promptfoo/commit/e96fc945ac7781ff8bd4a8c0696ea78fc81b0f01))\n* respect review language in example test generation ([#8334](https://github.com/promptfoo/promptfoo/issues/8334)) ([3163583](https://github.com/promptfoo/promptfoo/commit/3163583ea60a450d622975e2bba663ba3429c72b))\n* **sagemaker:** preserve zero maxTokens ([#8286](https://github.com/promptfoo/promptfoo/issues/8286)) ([75603d3](https://github.com/promptfoo/promptfoo/commit/75603d3eb2cb197d9eeb1261119420b34fa8d066))\n* **util:** preserve shared references in safeJsonStringify ([#8342](https://github.com/promptfoo/promptfoo/issues/8342)) ([987e8ad](https://github.com/promptfoo/promptfoo/commit/987e8adc759ad2ee1523a67afe6e6e750ba536b4))\n* **watsonx:** preserve zero max_new_tokens ([#8288](https://github.com/promptfoo/promptfoo/issues/8288)) ([b489160](https://github.com/promptfoo/promptfoo/commit/b4891600b8910f39a55beb0a25dbdddf5cf78606))\n* **webui:** clear output link feedback timers ([#8559](https://github.com/promptfoo/promptfoo/issues/8559)) ([aeac87d](https://github.com/promptfoo/promptfoo/commit/aeac87d1a26c5ddd26c8fd2b962254236198be41))\n\n\n### Reverts\n\n* feat(redteam): add next coding-agent plugins ([#8585](https://github.com/promptfoo/promptfoo/issues/8585)) ([720d677](https://github.com/promptfoo/promptfoo/commit/720d6774825ad5a3ac4d3dcdb9ca36a8c35b615c))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/307771602/reactions","total_count":3,"+1":3,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/300922929","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/300922929/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/300922929/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.3","id":300922929,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4R77gx","tag_name":"0.121.3","target_commitish":"4197b03c384adad2e26a369b5ee7aeb2013a71bc","name":"0.121.3","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-24T22:52:35Z","updated_at":"2026-03-24T22:53:00Z","published_at":"2026-03-24T22:52:54Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.3","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.3","body":"## [0.121.3](https://github.com/promptfoo/promptfoo/compare/0.121.2...0.121.3) (2026-03-24)\n\n\n### Features\n\n* add block-no-verify PreToolUse hook to .claude/settings.json ([#8234](https://github.com/promptfoo/promptfoo/issues/8234)) ([29a856a](https://github.com/promptfoo/promptfoo/commit/29a856a8fa2defba5bc8362ea6e14364b7e624ce))\n* add new config options to composite jailbreak strategy ([#7693](https://github.com/promptfoo/promptfoo/issues/7693)) ([071d345](https://github.com/promptfoo/promptfoo/commit/071d34592e626fa12399d43d6f2feda2a8edb67c))\n* **app:** add manual filtering to DataTable and improve filter UX ([#8122](https://github.com/promptfoo/promptfoo/issues/8122)) ([46dfdf5](https://github.com/promptfoo/promptfoo/commit/46dfdf57298b0cd6afa98b2b626bcb53e150cca8))\n* **assertions:** add trajectory eval assertions ([#8040](https://github.com/promptfoo/promptfoo/issues/8040)) ([6567fda](https://github.com/promptfoo/promptfoo/commit/6567fdaf0b381e65110451f802222fc0f861613a))\n* **assertions:** add trajectory tool args matching ([#8142](https://github.com/promptfoo/promptfoo/issues/8142)) ([d0ba078](https://github.com/promptfoo/promptfoo/commit/d0ba0780b01f900f9b78670b16e8fadb897afe20))\n* **http:** add file-based auth ([#8282](https://github.com/promptfoo/promptfoo/issues/8282)) ([00b497c](https://github.com/promptfoo/promptfoo/commit/00b497c23e43c0f2f4cafbbcfbdad65e4aedf9a8))\n* **providers:** add skill eval support for agent SDKs ([#8242](https://github.com/promptfoo/promptfoo/issues/8242)) ([3e2bfeb](https://github.com/promptfoo/promptfoo/commit/3e2bfeb4d51fa09cee1c1fd8530ad3114354f6b9))\n* **providers:** support GPT-5.4 mini and nano models ([#8216](https://github.com/promptfoo/promptfoo/issues/8216)) ([8ee7547](https://github.com/promptfoo/promptfoo/commit/8ee7547fe4f6a72e6206190758d878da91446a9c))\n* **providers:** support new sora video sizes ([#8147](https://github.com/promptfoo/promptfoo/issues/8147)) ([3e8af4d](https://github.com/promptfoo/promptfoo/commit/3e8af4d571825772c1d93e4729effc58db93255a))\n* **providers:** support Veo via Google AI Studio and Vertex ([#8185](https://github.com/promptfoo/promptfoo/issues/8185)) ([c8e340d](https://github.com/promptfoo/promptfoo/commit/c8e340de7a293fd95b16a80ccb4067d326092a46))\n* support opt-out from api key checks in claude-agent-sdk ([#8256](https://github.com/promptfoo/promptfoo/issues/8256)) ([13c040f](https://github.com/promptfoo/promptfoo/commit/13c040f3f4bc8415378239c4e13c1c8967738850))\n\n\n### Bug Fixes\n\n* **ai21:** preserve zero max_tokens ([#8287](https://github.com/promptfoo/promptfoo/issues/8287)) ([88da62a](https://github.com/promptfoo/promptfoo/commit/88da62a219dc0370301636cf7ff651238771dad1))\n* **anthropic:** preserve zero max_tokens_to_sample ([#8290](https://github.com/promptfoo/promptfoo/issues/8290)) ([92dd8b7](https://github.com/promptfoo/promptfoo/commit/92dd8b78291341fdd0142ce69a1ae0fbba575565))\n* **assertions:** stabilize trajectory eval assertions ([#8140](https://github.com/promptfoo/promptfoo/issues/8140)) ([a207119](https://github.com/promptfoo/promptfoo/commit/a2071199846ccc0b685cbf2e48e1016ed07d50e4))\n* **cli:** move success rate next to passes ([#8303](https://github.com/promptfoo/promptfoo/issues/8303)) ([8e09d59](https://github.com/promptfoo/promptfoo/commit/8e09d59450957bfc1d534fa7fbab249277658a8a))\n* **cli:** prevent API error logs from corrupting progress bar display ([#7646](https://github.com/promptfoo/promptfoo/issues/7646)) ([8aa4e42](https://github.com/promptfoo/promptfoo/commit/8aa4e4217e01bf0965970790f03c5c694f225954))\n* **deps:** update anthropic packages ([#8249](https://github.com/promptfoo/promptfoo/issues/8249)) ([15efcd7](https://github.com/promptfoo/promptfoo/commit/15efcd704998f5c66a427d28619f3ee812a4e77e))\n* **deps:** update dependency @anthropic-ai/sdk to ^0.80.0 ([#8281](https://github.com/promptfoo/promptfoo/issues/8281)) ([33d738f](https://github.com/promptfoo/promptfoo/commit/33d738fc9acf3da8e8ea064620ca47ad86a71a17))\n* **deps:** update dependency @openai/agents to ^0.6.0 ([#8179](https://github.com/promptfoo/promptfoo/issues/8179)) ([d221767](https://github.com/promptfoo/promptfoo/commit/d221767b0391e79bbcbada3c2788d18102a065ce))\n* **deps:** update dependency @openai/agents to ^0.7.0 ([#8189](https://github.com/promptfoo/promptfoo/issues/8189)) ([08a2c12](https://github.com/promptfoo/promptfoo/commit/08a2c127beaff35c29ba6e3c44f34b18a48d6871))\n* **deps:** update dependency @tanstack/react-virtual to ^3.13.22 ([#8201](https://github.com/promptfoo/promptfoo/issues/8201)) ([63cc2b1](https://github.com/promptfoo/promptfoo/commit/63cc2b175b6b4e649642ab8c2228dcfa3b09da10))\n* **deps:** update dependency better-sqlite3 to ^12.8.0 ([#8221](https://github.com/promptfoo/promptfoo/issues/8221)) ([7ffc164](https://github.com/promptfoo/promptfoo/commit/7ffc1645dc777521cdf99e706756b99e484f3a15))\n* **deps:** update dependency fast-xml-parser to ^5.5.0 ([#8168](https://github.com/promptfoo/promptfoo/issues/8168)) ([c1e0dcb](https://github.com/promptfoo/promptfoo/commit/c1e0dcbc0e84b19be40fa1898d0ec067298c41f0))\n* **deps:** update dependency fast-xml-parser to ^5.5.3 ([#8169](https://github.com/promptfoo/promptfoo/issues/8169)) ([ce1e672](https://github.com/promptfoo/promptfoo/commit/ce1e6724eb92388254af5f38f1cfc4218f73077d))\n* **deps:** update dependency fast-xml-parser to ^5.5.4 ([#8205](https://github.com/promptfoo/promptfoo/issues/8205)) ([ab66e52](https://github.com/promptfoo/promptfoo/commit/ab66e527a392aec3f9a6b80e8fd03bfd7144c112))\n* **deps:** update dependency fast-xml-parser to ^5.5.5 ([#8210](https://github.com/promptfoo/promptfoo/issues/8210)) ([ca3d586](https://github.com/promptfoo/promptfoo/commit/ca3d586fc8e0c5484b2691a6f314b52d3b3a0f77))\n* **deps:** update dependency lightningcss to ^1.32.0 ([#8149](https://github.com/promptfoo/promptfoo/issues/8149)) ([a5c5c3b](https://github.com/promptfoo/promptfoo/commit/a5c5c3b94685e78074203df886fd45a6e4c20b6e))\n* **deps:** update dependency lru-cache to ^11.2.7 ([#8215](https://github.com/promptfoo/promptfoo/issues/8215)) ([3065be9](https://github.com/promptfoo/promptfoo/commit/3065be92c42dac2ad40296b845a5bfc89b4f69e2))\n* **deps:** update dependency openai to ^6.32.0 ([#8269](https://github.com/promptfoo/promptfoo/issues/8269)) ([c7d7825](https://github.com/promptfoo/promptfoo/commit/c7d78250eec5cbff86b0179ddb35e0fd090bf167))\n* **deps:** update dependency proxy-agent to v7 ([#8186](https://github.com/promptfoo/promptfoo/issues/8186)) ([87affda](https://github.com/promptfoo/promptfoo/commit/87affdad72818a87e1dc82e46313a0dc54cc83ed))\n* **deps:** update dependency proxy-from-env to ^2.1.0 ([#8229](https://github.com/promptfoo/promptfoo/issues/8229)) ([8b4b542](https://github.com/promptfoo/promptfoo/commit/8b4b54270d8de3598f0ef82d68539143d4611dbe))\n* **deps:** update dependency simple-git to ^3.33.0 ([#8170](https://github.com/promptfoo/promptfoo/issues/8170)) ([39aee24](https://github.com/promptfoo/promptfoo/commit/39aee2496d8e4be0583d96a7d7bc31ebd9ed7c21))\n* **deps:** update example dependencies ([#8248](https://github.com/promptfoo/promptfoo/issues/8248)) ([53d5ab6](https://github.com/promptfoo/promptfoo/commit/53d5ab621e2e8c53a5626df10e4d142027069b23))\n* **deps:** update openai packages ([#8212](https://github.com/promptfoo/promptfoo/issues/8212)) ([42e523a](https://github.com/promptfoo/promptfoo/commit/42e523a67afbf74205688990a1310cf8a0c25d45))\n* **deps:** update openai packages ([#8268](https://github.com/promptfoo/promptfoo/issues/8268)) ([ac24038](https://github.com/promptfoo/promptfoo/commit/ac240385fcd40e7bc456e313a9a5aca5edc0bee7))\n* **elevenlabs:** preserve agents maxTurns zero ([#8285](https://github.com/promptfoo/promptfoo/issues/8285)) ([36ce694](https://github.com/promptfoo/promptfoo/commit/36ce6943cf94d51fe2e19f0ea8d6e7cbf3b6c54e))\n* **envars:** use explicit undefined check in getEnvInt and getEnvFloat ([#8182](https://github.com/promptfoo/promptfoo/issues/8182)) ([f3215e5](https://github.com/promptfoo/promptfoo/commit/f3215e552bb15a5e74eb6da74b04999cfb9bc4e4))\n* **examples:** use append_allowed_tools in plugins example ([#8143](https://github.com/promptfoo/promptfoo/issues/8143)) ([3510ba8](https://github.com/promptfoo/promptfoo/commit/3510ba8e42a494cc89bfb7f9bda238586077070e))\n* **http:** expose oauth token in vars ([#8304](https://github.com/promptfoo/promptfoo/issues/8304)) ([fee4bc0](https://github.com/promptfoo/promptfoo/commit/fee4bc058df350fb0f0167f8f223e732c84771e0))\n* **mistral:** handle tool call responses where content is null ([#8165](https://github.com/promptfoo/promptfoo/issues/8165)) ([9c93471](https://github.com/promptfoo/promptfoo/commit/9c9347128580d1bd3367be82586f02ffb1e9eff4))\n* **providers:** add gpt-5.4 mini and nano support ([#8219](https://github.com/promptfoo/promptfoo/issues/8219)) ([68c1961](https://github.com/promptfoo/promptfoo/commit/68c196119903e016b08c26aa9b3e1b050e09c5a6))\n* **providers:** add requiresApiKey() to claude-agent-sdk for Vertex/Bedrock support ([#8132](https://github.com/promptfoo/promptfoo/issues/8132)) ([49af17b](https://github.com/promptfoo/promptfoo/commit/49af17b51d8d09442e8c36d5d1f46fdc840d934a))\n* **providers:** support gpt-5.4 in codex provider ([#8228](https://github.com/promptfoo/promptfoo/issues/8228)) ([ee7ae2c](https://github.com/promptfoo/promptfoo/commit/ee7ae2c71bad28f9237b9a2541256b0035406783))\n* **providers:** use merged env for claude-agent-sdk provider registration ([#8134](https://github.com/promptfoo/promptfoo/issues/8134)) ([456199c](https://github.com/promptfoo/promptfoo/commit/456199c953e8bcb554aeada65e64b5973007d179))\n* **providers:** use nullish coalescing for temperature in Anthropic Messages and LocalAI ([#8163](https://github.com/promptfoo/promptfoo/issues/8163)) ([94adbe1](https://github.com/promptfoo/promptfoo/commit/94adbe1c23d8eb5b1fad83853ac2a53e0da5ade8))\n* **providers:** use nullish coalescing for temperature with provider-scoped env support ([#8167](https://github.com/promptfoo/promptfoo/issues/8167)) ([3b20e2b](https://github.com/promptfoo/promptfoo/commit/3b20e2ba606e7121a75c93be6c48174da9d99e23))\n* **redteam:** de-alias generated redteam examples ([#8241](https://github.com/promptfoo/promptfoo/issues/8241)) ([6117b52](https://github.com/promptfoo/promptfoo/commit/6117b52b092882bde2258a9b91ff4a41e09ae778))\n* **redteam:** fix Rules of Hooks violation in RiskCategoryDrawer ([#8072](https://github.com/promptfoo/promptfoo/issues/8072)) ([afb2732](https://github.com/promptfoo/promptfoo/commit/afb2732d823c0c97ef3a4f332e032861739b55ad))\n* **redteam:** preserve voice crescendo zero max backtracks ([#8296](https://github.com/promptfoo/promptfoo/issues/8296)) ([0d3e4b7](https://github.com/promptfoo/promptfoo/commit/0d3e4b79759bcf133ad62961ea5c6f30b9327265))\n* **replicate:** preserve zero-valued config ([#8128](https://github.com/promptfoo/promptfoo/issues/8128)) ([14890e6](https://github.com/promptfoo/promptfoo/commit/14890e62a87f7d4e759d1fc6fefb4bc46a53b5a8))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/300922929/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/296238034","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/296238034/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/296238034/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.2","id":296238034,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4RqDvS","tag_name":"0.121.2","target_commitish":"126bd91acf1f9ae1b64db29e8499b5e979f44fad","name":"0.121.2","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-12T15:14:39Z","updated_at":"2026-03-12T15:15:05Z","published_at":"2026-03-12T15:14:59Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.2","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.2","body":"## [0.121.2](https://github.com/promptfoo/promptfoo/compare/0.121.1...0.121.2) (2026-03-12)\n\n\n### Bug Fixes\n\n* add node-addon-api to devDependencies for sharp build ([#8102](https://github.com/promptfoo/promptfoo/issues/8102)) ([1d4e959](https://github.com/promptfoo/promptfoo/commit/1d4e9596f2199ade67e4b65207b8f99b7c2b1b3b))\n* **deps:** update dependency @tanstack/react-virtual to ^3.13.20 ([#8083](https://github.com/promptfoo/promptfoo/issues/8083)) ([5e5f774](https://github.com/promptfoo/promptfoo/commit/5e5f7746b065f45147efc9fedaff3366af01e020))\n* **deps:** update dependency @tanstack/react-virtual to ^3.13.21 ([#8104](https://github.com/promptfoo/promptfoo/issues/8104)) ([b17998b](https://github.com/promptfoo/promptfoo/commit/b17998bd9fcc6ad7c67236f83e1a4353227ab7e6))\n* **deps:** update mui packages to ^7.3.9 ([#8077](https://github.com/promptfoo/promptfoo/issues/8077)) ([4db1d67](https://github.com/promptfoo/promptfoo/commit/4db1d67b081a4180d099cbff63978713326fb8e9))\n* **deps:** update openai packages ([#7956](https://github.com/promptfoo/promptfoo/issues/7956)) ([5b70a50](https://github.com/promptfoo/promptfoo/commit/5b70a5089d25cc7bd227703144f35e74d6d52995))\n* **eval:** preserve chart default state per eval ([#8087](https://github.com/promptfoo/promptfoo/issues/8087)) ([cd26f4a](https://github.com/promptfoo/promptfoo/commit/cd26f4a16dfca36043b06f934c3a2ce5301571f5))\n* **examples:** use matching gpt-4o model in temperature comparison ([#8074](https://github.com/promptfoo/promptfoo/issues/8074)) ([516df96](https://github.com/promptfoo/promptfoo/commit/516df96042d5fdec7522548b1f30b6eb7c58704b))\n* not-contains-json with schema respects inverse flag ([#8069](https://github.com/promptfoo/promptfoo/issues/8069)) ([baf5e1b](https://github.com/promptfoo/promptfoo/commit/baf5e1bfda95cc7b9d53642a9e9c265489826307))\n* prevent caching error responses in fetchWithCache ([#8070](https://github.com/promptfoo/promptfoo/issues/8070)) ([033e1bb](https://github.com/promptfoo/promptfoo/commit/033e1bb688cf1054961f94d6563b904c8d14cab3))\n* **providers:** align openclaw with upstream gateway ([#8058](https://github.com/promptfoo/promptfoo/issues/8058)) ([f130803](https://github.com/promptfoo/promptfoo/commit/f1308031752870233b8f0b2b35137ecd7c3a76d2))\n* **providers:** omit default temperature for LiteLLM proxy provider ([#8064](https://github.com/promptfoo/promptfoo/issues/8064)) ([f831d39](https://github.com/promptfoo/promptfoo/commit/f831d399b5dc0bf131305e9eff4ffadbbd79881c))\n* **redteam:** avoid router dependency in risk category drawer ([#8085](https://github.com/promptfoo/promptfoo/issues/8085)) ([1e1d9ac](https://github.com/promptfoo/promptfoo/commit/1e1d9ac537e187ac7927511b3b6bfbb8321ee254))\n* **redteam:** improve EU AI Act preset bias/discrimination coverage ([#8115](https://github.com/promptfoo/promptfoo/issues/8115)) ([30ce06b](https://github.com/promptfoo/promptfoo/commit/30ce06bc2ac13d7bcdaac374fd63252f3a2a3b48))\n* remove unnecessary string length limit for env var rendering ([#8110](https://github.com/promptfoo/promptfoo/issues/8110)) ([40a6b09](https://github.com/promptfoo/promptfoo/commit/40a6b091370974e44bbba31eaa7f7b9e8cad53ac))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/296238034/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294793948","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294793948/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/294793948/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.1","id":294793948,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4RkjLc","tag_name":"0.121.1","target_commitish":"f3670eced1b4f97910bc25f46694971aee492bb2","name":"0.121.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-09T16:33:52Z","updated_at":"2026-03-09T16:34:15Z","published_at":"2026-03-09T16:34:10Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.1","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.1","body":"## [0.121.1](https://github.com/promptfoo/promptfoo/compare/0.121.0...0.121.1) (2026-03-09)\n\n\n### Bug Fixes\n\n* **providers:** support newer opencode sdk api ([#8060](https://github.com/promptfoo/promptfoo/issues/8060)) ([7ec80b2](https://github.com/promptfoo/promptfoo/commit/7ec80b2e173dc99438002c8f5d16feb7b6643aa1))","reactions":{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294793948/reactions","total_count":3,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":3,"rocket":0,"eyes":0}},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294768638","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294768638/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/294768638/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.121.0","id":294768638,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Rkc_-","tag_name":"0.121.0","target_commitish":"6993f18b1846a4e722f4f28d1f009baeb86cdf6b","name":"0.121.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-09T15:38:35Z","updated_at":"2026-03-09T15:39:20Z","published_at":"2026-03-09T15:39:14Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.121.0","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.121.0","body":"## [0.121.0](https://github.com/promptfoo/promptfoo/compare/0.120.27...0.121.0) (2026-03-09)\n\n\n### ⚠ BREAKING CHANGES\n\n* **providers:** resolve relative config paths against config dir in claude-agent-sdk ([#8030](https://github.com/promptfoo/promptfoo/issues/8030))\n\n### Features\n\n* **redteam:** generalize insurance plugins for all insurance types ([#8002](https://github.com/promptfoo/promptfoo/issues/8002)) ([945c3bc](https://github.com/promptfoo/promptfoo/commit/945c3bc6725ca8bc7369f7d0efed6f8394da98fa))\n* stop multi-turn redteam attacks when target closes thread ([#7942](https://github.com/promptfoo/promptfoo/issues/7942)) ([d849923](https://github.com/promptfoo/promptfoo/commit/d84992322a2442f6d1a71a744f297d5e808ab770))\n\n\n### Bug Fixes\n\n* **app:** enforce strategy config limits via onChange clamping ([#8045](https://github.com/promptfoo/promptfoo/issues/8045)) ([9b8920d](https://github.com/promptfoo/promptfoo/commit/9b8920d97a3a8cd4091e7e5b6ff20efff74e2ded))\n* **app:** restore composite jailbreak strategy visibility ([#8013](https://github.com/promptfoo/promptfoo/issues/8013)) ([a34ec66](https://github.com/promptfoo/promptfoo/commit/a34ec664ece825532bcd14c31b79ddf0afab9dbc))\n* **ci:** skip email verification API call in CI environments ([#8034](https://github.com/promptfoo/promptfoo/issues/8034)) ([594a4a7](https://github.com/promptfoo/promptfoo/commit/594a4a7ad46203d2c5d3ac833c25ecfd14295847))\n* **cli:** cap agent fs reads before loading file ([#8050](https://github.com/promptfoo/promptfoo/issues/8050)) ([d39c41b](https://github.com/promptfoo/promptfoo/commit/d39c41b89262fafeced2778801e2e637eab8d19a))\n* **deps:** update dependency @opencode-ai/sdk to ^1.2.19 ([#8052](https://github.com/promptfoo/promptfoo/issues/8052)) ([995f94c](https://github.com/promptfoo/promptfoo/commit/995f94cef32c953de83d3e35cd273c09fad34472))\n* **deps:** update dependency fast-xml-parser to ^5.4.2 ([#8042](https://github.com/promptfoo/promptfoo/issues/8042)) ([8be46a5](https://github.com/promptfoo/promptfoo/commit/8be46a5b096092cf68ef1cf989e706b461807d0c))\n* **deps:** update opentelemetry ([#8056](https://github.com/promptfoo/promptfoo/issues/8056)) ([6b4ed86](https://github.com/promptfoo/promptfoo/commit/6b4ed863686fa49e922d697bbf725555cd8adaa0))\n* make quoted comma parsing consistent across contains assertions ([#8041](https://github.com/promptfoo/promptfoo/issues/8041)) ([3c1ad55](https://github.com/promptfoo/promptfoo/commit/3c1ad55811347febe7479b4bfb77887b7dc5003e))\n* **providers:** resolve relative config paths against config dir in claude-agent-sdk ([#8030](https://github.com/promptfoo/promptfoo/issues/8030)) ([2e8a976](https://github.com/promptfoo/promptfoo/commit/2e8a9763ee2e663473f915b18417abdbaf408634))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294123969","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/294123969/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/294123969/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.120.27","id":294123969,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Rh_nB","tag_name":"0.120.27","target_commitish":"6020eff2d0a287aaeb0ee0c55cce0bd4a3747970","name":"0.120.27","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-06T22:14:11Z","updated_at":"2026-03-06T22:14:30Z","published_at":"2026-03-06T22:14:25Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.120.27","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.120.27","body":"## [0.120.27](https://github.com/promptfoo/promptfoo/compare/0.120.26...0.120.27) (2026-03-06)\n\n\n### Features\n\n* add promptfoo-evals agent skill for Claude Code and Codex ([#7985](https://github.com/promptfoo/promptfoo/issues/7985)) ([71160fe](https://github.com/promptfoo/promptfoo/commit/71160fea6aaa3471de9c6027b929830bdd7acfb0))\n* **app:** add media library page ([#6901](https://github.com/promptfoo/promptfoo/issues/6901)) ([4eba85a](https://github.com/promptfoo/promptfoo/commit/4eba85aac7a3103a4edbf40c834dd23301160afe))\n* **code-scan:** add retry with exponential backoff for capacity errors ([#8016](https://github.com/promptfoo/promptfoo/issues/8016)) ([8d263e4](https://github.com/promptfoo/promptfoo/commit/8d263e47118f99a12289debc9ff746c43660fc96))\n* dod ethical ai mappings ([#7948](https://github.com/promptfoo/promptfoo/issues/7948)) ([4e2c897](https://github.com/promptfoo/promptfoo/commit/4e2c897c62936ea896ecfc2ba2864739eeb0191f))\n* **eval-creator:** add yaml download and cli callout ([#7932](https://github.com/promptfoo/promptfoo/issues/7932)) ([c73c002](https://github.com/promptfoo/promptfoo/commit/c73c002fdd45bc116537c74711010877b05584a0))\n* **eval:** detect missing API keys before running evaluation ([#7937](https://github.com/promptfoo/promptfoo/issues/7937)) ([d2b7d61](https://github.com/promptfoo/promptfoo/commit/d2b7d61f2a68834e525a1d4bb6e6fa39d03318ae))\n* **eval:** disable auto-share by default unless paid cloud customer ([#7982](https://github.com/promptfoo/promptfoo/issues/7982)) ([9df2250](https://github.com/promptfoo/promptfoo/commit/9df2250611e18218fd5a12eade8958bdbfafdaf2))\n* handle email_verification_required in redteam prechecks (ENG-1531) ([#7979](https://github.com/promptfoo/promptfoo/issues/7979)) ([2c66d1b](https://github.com/promptfoo/promptfoo/commit/2c66d1b6ec4627323b5ea764121b22d8d77ac7c0))\n* **providers/google:** add Nano Banana 2 image model support ([#7884](https://github.com/promptfoo/promptfoo/issues/7884)) ([0dba833](https://github.com/promptfoo/promptfoo/commit/0dba833169ce94c2ca7ea94cf14eb9b24b75663f))\n* **providers:** add gpt-5.3 and gpt-5.2 aliases ([#7965](https://github.com/promptfoo/promptfoo/issues/7965)) ([2001eda](https://github.com/promptfoo/promptfoo/commit/2001edafb90d2e75bc12ada5864113abb1a56893))\n* **providers:** add gpt-5.4 and gpt-5.4-pro aliases ([#8008](https://github.com/promptfoo/promptfoo/issues/8008)) ([3d9826e](https://github.com/promptfoo/promptfoo/commit/3d9826e93193f4cb90756655f0628c54d0648616))\n* **providers:** add gpt-5.4 model support ([#8009](https://github.com/promptfoo/promptfoo/issues/8009)) ([968ca35](https://github.com/promptfoo/promptfoo/commit/968ca35c73e6ec3289e4eccae0a4f2c12665f02a))\n* **providers:** add ModelsLab image generation provider ([#7925](https://github.com/promptfoo/promptfoo/issues/7925)) ([df5f07a](https://github.com/promptfoo/promptfoo/commit/df5f07af00361541730e3bb64a8bff8d54f3fce0))\n* **providers:** add Vertex AI cost calculation for Gemini models ([#7490](https://github.com/promptfoo/promptfoo/issues/7490)) ([f2b7de4](https://github.com/promptfoo/promptfoo/commit/f2b7de4ce826a89af006edc61f9ddb6b2eec3397))\n* **providers:** expose all choices in metadata when n &gt; 1 ([#8007](https://github.com/promptfoo/promptfoo/issues/8007)) ([d8f4239](https://github.com/promptfoo/promptfoo/commit/d8f4239aba627d0986673490a5c28da8d0ea0c59))\n* **providers:** rewrite QuiverAI for native SVG API ([#7951](https://github.com/promptfoo/promptfoo/issues/7951)) ([f76ffb5](https://github.com/promptfoo/promptfoo/commit/f76ffb567c3d416d43d95d641bdca1ae5ebc7690))\n* **redteam:** add monthly probe limit for non-cloud users ([#7966](https://github.com/promptfoo/promptfoo/issues/7966)) ([ef8ff9c](https://github.com/promptfoo/promptfoo/commit/ef8ff9cf75908466cedda5378e96060957ba9db1))\n* **redteam:** rate-limit expensive strategies for unauthenticated users ([#8005](https://github.com/promptfoo/promptfoo/issues/8005)) ([662a8bc](https://github.com/promptfoo/promptfoo/commit/662a8bc0584ad3708676fa65fad35b03f8ca51d3))\n* **targetLink:** add HTTP probe, filesystem ops, and error classification types ([#7981](https://github.com/promptfoo/promptfoo/issues/7981)) ([e988d56](https://github.com/promptfoo/promptfoo/commit/e988d569685e1f1e8d277b70f3060d330f77c481))\n\n\n### Bug Fixes\n\n* **app:** deduplicate image outputs in eval cell ([#8012](https://github.com/promptfoo/promptfoo/issues/8012)) ([71a1cd4](https://github.com/promptfoo/promptfoo/commit/71a1cd4855706593a0d926eb5922cb09861f25f0))\n* **app:** improve data table expanded rows ([#8015](https://github.com/promptfoo/promptfoo/issues/8015)) ([ead520b](https://github.com/promptfoo/promptfoo/commit/ead520b0776ba1afbef5b6b402a0ea62da17eec2))\n* **app:** restore default border color for Tailwind v4 ([#7920](https://github.com/promptfoo/promptfoo/issues/7920)) ([e17430e](https://github.com/promptfoo/promptfoo/commit/e17430e24f55ea712c5b6efe0ba3f673698f898c))\n* **ci:** use npm ci for docs and site-tests jobs to fix serialize-javascript override ([#7952](https://github.com/promptfoo/promptfoo/issues/7952)) ([013f90d](https://github.com/promptfoo/promptfoo/commit/013f90d4b523f2a9dbcf7f1baec2724011d19953))\n* **cloud:** strip heavy fields from permission check payload ([#7839](https://github.com/promptfoo/promptfoo/issues/7839)) ([aba832d](https://github.com/promptfoo/promptfoo/commit/aba832df29cc3a697047dc8df5b78f56e3f3f971))\n* **deps:** override dompurify to &gt;=3.3.2 to resolve XSS CVE in monaco-editor ([#8026](https://github.com/promptfoo/promptfoo/issues/8026)) ([fc7a3a8](https://github.com/promptfoo/promptfoo/commit/fc7a3a808de05e00039fe6bbdea753711b59316e))\n* **deps:** resolve all npm audit vulnerabilities via overrides ([#7947](https://github.com/promptfoo/promptfoo/issues/7947)) ([0b94778](https://github.com/promptfoo/promptfoo/commit/0b94778e95aece10e9ce2dced40ea29a77a6bc49))\n* **deps:** update dependency @actions/github to v9 ([#7432](https://github.com/promptfoo/promptfoo/issues/7432)) ([efa1625](https://github.com/promptfoo/promptfoo/commit/efa16252995c847a99e6b4998c5663279c1d0bb2))\n* **deps:** update dependency @apidevtools/json-schema-ref-parser to ^15.3.0 ([#8010](https://github.com/promptfoo/promptfoo/issues/8010)) ([aa25f9b](https://github.com/promptfoo/promptfoo/commit/aa25f9b0754cad34aa9f1024fb59181b035fbe06))\n* **deps:** update dependency @apidevtools/json-schema-ref-parser to ^15.3.1 ([#8011](https://github.com/promptfoo/promptfoo/issues/8011)) ([82eaaa3](https://github.com/promptfoo/promptfoo/commit/82eaaa3e279e4dc8fcd91db4a8ad0d0ecec070d2))\n* **deps:** update dependency @opentelemetry/semantic-conventions to ^1.40.0 ([#7957](https://github.com/promptfoo/promptfoo/issues/7957)) ([ece8f61](https://github.com/promptfoo/promptfoo/commit/ece8f61a7cd896d1fb347d970065e1a4f85153b3))\n* **deps:** update dependency minimatch to ^10.2.4 ([#7939](https://github.com/promptfoo/promptfoo/issues/7939)) ([639301f](https://github.com/promptfoo/promptfoo/commit/639301fcdbc252f27100e308d65218c28f202006))\n* **deps:** update dependency simple-git to ^3.32.3 ([#7954](https://github.com/promptfoo/promptfoo/issues/7954)) ([1d62387](https://github.com/promptfoo/promptfoo/commit/1d62387874920f82011a6978fa8bd68b7f70b8ca))\n* **deps:** update github actions to v3 (major) ([#7946](https://github.com/promptfoo/promptfoo/issues/7946)) ([2a6600d](https://github.com/promptfoo/promptfoo/commit/2a6600d9d1317bd2763ff2e2bd006b1e0bb09aaf))\n* **deps:** update openai packages ([#7928](https://github.com/promptfoo/promptfoo/issues/7928)) ([9facd14](https://github.com/promptfoo/promptfoo/commit/9facd1494006001bdfb69dbd23673f19c20f44c5))\n* **eval:** improve eval setup web UI ([#8000](https://github.com/promptfoo/promptfoo/issues/8000)) ([d2c166d](https://github.com/promptfoo/promptfoo/commit/d2c166df4faea868629a425a9550db03ab316de4))\n* **eval:** pass dynamic prompt config to providers ([#7970](https://github.com/promptfoo/promptfoo/issues/7970)) ([8a75163](https://github.com/promptfoo/promptfoo/commit/8a75163b233d43c5a81ab11547c9704d1670b95f))\n* **matchers:** handle missing context-faithfulness verdicts ([#7991](https://github.com/promptfoo/promptfoo/issues/7991)) ([242486c](https://github.com/promptfoo/promptfoo/commit/242486c73d9a5d26fb181643fe7ebc0587b7fa51))\n* **output:** redact exported config secrets and clarify docs ([#7974](https://github.com/promptfoo/promptfoo/issues/7974)) ([1e0a48b](https://github.com/promptfoo/promptfoo/commit/1e0a48b6e8d6d66a8cb6d0cd66f86eb3beb636b9))\n* **providers:** avoid bedrock http2 runtime failures ([#7993](https://github.com/promptfoo/promptfoo/issues/7993)) ([76e256c](https://github.com/promptfoo/promptfoo/commit/76e256c8df8c4a7caf56f37b308ab192015f4ef5))\n* **providers:** guard top_p for reasoning models, remove dead code, update UI defaults ([#7963](https://github.com/promptfoo/promptfoo/issues/7963)) ([cec3ac0](https://github.com/promptfoo/promptfoo/commit/cec3ac0c95fda61ffbe8e87f03775a6b51e25753))\n* **providers:** handle system messages in Vertex Claude API calls ([#7902](https://github.com/promptfoo/promptfoo/issues/7902)) ([b2116a5](https://github.com/promptfoo/promptfoo/commit/b2116a5ae377ced6ea2394957f33c8ace9308f5e))\n* **providers:** improve Vertex Claude system message handling ([#7977](https://github.com/promptfoo/promptfoo/issues/7977)) ([45c2de2](https://github.com/promptfoo/promptfoo/commit/45c2de2ee103438f5f5fe5f874b7899cdf3dc1bc))\n* **providers:** reduce google ADC metadata lookup warnings ([#7992](https://github.com/promptfoo/promptfoo/issues/7992)) ([f31e779](https://github.com/promptfoo/promptfoo/commit/f31e7793cc9fd2ed67969dbd68a28472493b4463))\n* **providers:** resolve env var placeholders in file:// provider references ([#7997](https://github.com/promptfoo/promptfoo/issues/7997)) ([5397dd6](https://github.com/promptfoo/promptfoo/commit/5397dd6470ba55d36a74a0e152ab9984fa419b0b))\n* **redteam:** add anti-hallucination guardrails to policy grader rubric ([#7829](https://github.com/promptfoo/promptfoo/issues/7829)) ([cf04414](https://github.com/promptfoo/promptfoo/commit/cf044140479ecd85f5fc6ebf8810ac76d7c07625))\n* **redteam:** clarify hydra/meta error when OPENAI_API_KEY blocks remote generation ([#8020](https://github.com/promptfoo/promptfoo/issues/8020)) ([21eae98](https://github.com/promptfoo/promptfoo/commit/21eae985e2bec2449f58850d335e23daf7c72923))\n* **redteam:** exclude default strategies from OSS setup sidebar count ([#7989](https://github.com/promptfoo/promptfoo/issues/7989)) ([8bf49cf](https://github.com/promptfoo/promptfoo/commit/8bf49cfee8f24ad741abda11a5edde67de9e342d))\n* **redteam:** honor config.model for openai:chat ([#7971](https://github.com/promptfoo/promptfoo/issues/7971)) ([a5cc127](https://github.com/promptfoo/promptfoo/commit/a5cc1274e43899c594933b82d6e6c3573bb43e57))\n* **redteam:** propagate sessionId to context.vars in hydra stateful mode ([#7960](https://github.com/promptfoo/promptfoo/issues/7960)) ([554c305](https://github.com/promptfoo/promptfoo/commit/554c30527edf50956d76e6ac5e0f28641fb48b79))\n* **redteam:** show pointer cursor on setup tabs and filters ([#7929](https://github.com/promptfoo/promptfoo/issues/7929)) ([bf43419](https://github.com/promptfoo/promptfoo/commit/bf43419a27581485f92acd6e7de333d55712ca86))\n* **skill:** correct plugin structure, transform syntax, and provider format ([#7986](https://github.com/promptfoo/promptfoo/issues/7986)) ([592fca9](https://github.com/promptfoo/promptfoo/commit/592fca976e50a99071f43e2d5d0e3f4de95f859e))\n* **ui:** wrap long log lines in log viewer ([#8001](https://github.com/promptfoo/promptfoo/issues/8001)) ([98c35be](https://github.com/promptfoo/promptfoo/commit/98c35be3822911e96778c681c8a76a831ccbb40b))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/292324332","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/292324332/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/292324332/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.120.26","id":292324332,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4RbIPs","tag_name":"0.120.26","target_commitish":"64597c70b8c519d3bd7f3c897ae7707051767e84","name":"0.120.26","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-03T00:44:30Z","updated_at":"2026-03-03T00:44:51Z","published_at":"2026-03-03T00:44:46Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.120.26","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.120.26","body":"## [0.120.26](https://github.com/promptfoo/promptfoo/compare/0.120.25...0.120.26) (2026-03-03)\n\n\n### Features\n\n* Add financial:sox-compliance plugin ([#7780](https://github.com/promptfoo/promptfoo/issues/7780)) ([b7cfc8e](https://github.com/promptfoo/promptfoo/commit/b7cfc8e47c5594a498c8a472460896424e5ada52))\n* add model-identification plugin ([#7883](https://github.com/promptfoo/promptfoo/issues/7883)) ([a2ac7c6](https://github.com/promptfoo/promptfoo/commit/a2ac7c6139aaed061f41fd7ab83c7562e1672068))\n* **app:** add href support to Chip component ([#7783](https://github.com/promptfoo/promptfoo/issues/7783)) ([983970a](https://github.com/promptfoo/promptfoo/commit/983970ab8f9ed0731f3c0dcac27f2f76ce2ce0d0))\n* **providers:** add Gemini 3.1 Pro support ([#7779](https://github.com/promptfoo/promptfoo/issues/7779)) ([e41c203](https://github.com/promptfoo/promptfoo/commit/e41c203bb53ac0e9dc02b1bcd9682c3044b87c57))\n* **providers:** expose tool calls in Claude Agent SDK response metadata ([#7790](https://github.com/promptfoo/promptfoo/issues/7790)) ([d1a2d28](https://github.com/promptfoo/promptfoo/commit/d1a2d289bb5154a5dd6b412ce03146ed760d33a0))\n* **providers:** support LITELLM_API_BASE env var for base URL override ([#7862](https://github.com/promptfoo/promptfoo/issues/7862)) ([9aa543e](https://github.com/promptfoo/promptfoo/commit/9aa543e8fd30c4a3209d30e6930758498c34c7a8))\n* **redteam:** add Zod validation for redteam routes ([#7811](https://github.com/promptfoo/promptfoo/issues/7811)) ([85e4c48](https://github.com/promptfoo/promptfoo/commit/85e4c4815541482d72261e1d7d6a8b6d9e172381))\n* **redteam:** improve eval header, print styles, and report navigation ([#7613](https://github.com/promptfoo/promptfoo/issues/7613)) ([3beaca4](https://github.com/promptfoo/promptfoo/commit/3beaca4c4248df31f6f6f15c4a869d08a23533e1))\n* **report:** add toggle for untested framework plugins ([#7770](https://github.com/promptfoo/promptfoo/issues/7770)) ([63d803c](https://github.com/promptfoo/promptfoo/commit/63d803c503be0ce842bc838dac901dd8db6c6823))\n* **server:** add CSRF protection middleware ([#7840](https://github.com/promptfoo/promptfoo/issues/7840)) ([a574489](https://github.com/promptfoo/promptfoo/commit/a5744892efeb7980934d15d97b1895d792d43b3b))\n* **server:** add Zod validation for eval, user, and redteam routes ([#7817](https://github.com/promptfoo/promptfoo/issues/7817)) ([21948ec](https://github.com/promptfoo/promptfoo/commit/21948ec0b9fad283384967b9a09d49d2d106d1c7))\n* **server:** add Zod validation for model audit routes ([#7799](https://github.com/promptfoo/promptfoo/issues/7799)) ([b441654](https://github.com/promptfoo/promptfoo/commit/b4416540a2e7edb0b1362f17073635c9f6a38c63))\n* **server:** add Zod validation for provider routes ([#7814](https://github.com/promptfoo/promptfoo/issues/7814)) ([27e0fc3](https://github.com/promptfoo/promptfoo/commit/27e0fc38bb2e1f8f3d0028d5c4a17d2b08d1e388))\n* **server:** add Zod validation for traces, blobs, media, version routes ([#7805](https://github.com/promptfoo/promptfoo/issues/7805)) ([4c55f56](https://github.com/promptfoo/promptfoo/commit/4c55f5640907143b1936abb669a51cf09c5ed5d7))\n* **server:** add Zod validation schemas for config routes ([#7794](https://github.com/promptfoo/promptfoo/issues/7794)) ([c2847ff](https://github.com/promptfoo/promptfoo/commit/c2847ff735aa63c2c51db704c6d2d40475e9f4ca))\n* **server:** add Zod validation schemas for eval routes ([#7360](https://github.com/promptfoo/promptfoo/issues/7360)) ([9d7dcb1](https://github.com/promptfoo/promptfoo/commit/9d7dcb1042a1f184f95814d3e10d5cca434dc4bd))\n* **webui:** Adds server-side pagination, column-level filtering, and expandable rows to DataTable ([#7838](https://github.com/promptfoo/promptfoo/issues/7838)) ([55ad28b](https://github.com/promptfoo/promptfoo/commit/55ad28b27f0f530fefe0ce3bbc3c6e50f1f2baa2))\n\n\n### Bug Fixes\n\n* **app:** add border style lint and explicit border colors ([#7885](https://github.com/promptfoo/promptfoo/issues/7885)) ([956b160](https://github.com/promptfoo/promptfoo/commit/956b1604c4ab409b1891875980703123359cf68a))\n* **app:** remove global border-color ([#7784](https://github.com/promptfoo/promptfoo/issues/7784)) ([6540828](https://github.com/promptfoo/promptfoo/commit/6540828cb82ebb6fc419a3154eb8b2d199cc4ae5))\n* **app:** wrap DataTable body cells in overflow-hidden container ([#7833](https://github.com/promptfoo/promptfoo/issues/7833)) ([5f59f23](https://github.com/promptfoo/promptfoo/commit/5f59f2349b99fc3e554cb95935df86ed3f5ad759))\n* **deps:** update [@inquirer](https://github.com/inquirer) packages ([#7777](https://github.com/promptfoo/promptfoo/issues/7777)) ([385f899](https://github.com/promptfoo/promptfoo/commit/385f899e5d29c92df2aeae0d1f456b46ae020812))\n* **deps:** update [@inquirer](https://github.com/inquirer) packages ([#7806](https://github.com/promptfoo/promptfoo/issues/7806)) ([fb39ca6](https://github.com/promptfoo/promptfoo/commit/fb39ca6905ed7cfaaaac17188429884cf00d9744))\n* **deps:** update [@inquirer](https://github.com/inquirer) packages ([#7908](https://github.com/promptfoo/promptfoo/issues/7908)) ([94c2259](https://github.com/promptfoo/promptfoo/commit/94c2259adda887399dcf15b1a483fcbd2cc20cb6))\n* **deps:** update anthropic packages ([#7816](https://github.com/promptfoo/promptfoo/issues/7816)) ([ec860e8](https://github.com/promptfoo/promptfoo/commit/ec860e8bc6743f8679e213855f22322aab9c1927))\n* **deps:** update dependency @anthropic-ai/sdk to ^0.77.0 ([#7830](https://github.com/promptfoo/promptfoo/issues/7830)) ([933b355](https://github.com/promptfoo/promptfoo/commit/933b355b8fc91dfab25e3b943701aa9c6b13e7e2))\n* **deps:** update dependency @anthropic-ai/sdk to ^0.78.0 ([#7852](https://github.com/promptfoo/promptfoo/issues/7852)) ([372b05a](https://github.com/promptfoo/promptfoo/commit/372b05a170b3d949b80dcd23bfded562138c8a69))\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.27.0 ([#7836](https://github.com/promptfoo/promptfoo/issues/7836)) ([279180f](https://github.com/promptfoo/promptfoo/commit/279180f05c78bdd2dd4cab722b2c6446c5632add))\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.27.1 ([#7927](https://github.com/promptfoo/promptfoo/issues/7927)) ([2309593](https://github.com/promptfoo/promptfoo/commit/23095934deb499f285b0f7b55091c8216df7d874))\n* **deps:** update dependency @openai/agents to ^0.4.10 ([#7768](https://github.com/promptfoo/promptfoo/issues/7768)) ([9fe7b4c](https://github.com/promptfoo/promptfoo/commit/9fe7b4c07f25572645ea8bb4c435a716cb07c4ce))\n* **deps:** update dependency @openai/agents to ^0.4.11 ([#7818](https://github.com/promptfoo/promptfoo/issues/7818)) ([bfa837b](https://github.com/promptfoo/promptfoo/commit/bfa837bfed6808042e0e7ecaa666387e15469a1f))\n* **deps:** update dependency @openai/agents to ^0.4.12 ([#7822](https://github.com/promptfoo/promptfoo/issues/7822)) ([7f2c208](https://github.com/promptfoo/promptfoo/commit/7f2c208aae635b5b5b176377430f79f002490a8f))\n* **deps:** update dependency @openai/agents to ^0.4.13 ([#7843](https://github.com/promptfoo/promptfoo/issues/7843)) ([fb82b8b](https://github.com/promptfoo/promptfoo/commit/fb82b8b88dcb41ae5e7c44f1de314889d75c6449))\n* **deps:** update dependency @openai/agents to ^0.4.14 ([#7855](https://github.com/promptfoo/promptfoo/issues/7855)) ([c1012b4](https://github.com/promptfoo/promptfoo/commit/c1012b42a5bd6e69d522583a5182b513f6488bc9))\n* **deps:** update dependency @openai/agents to ^0.4.15 ([#7874](https://github.com/promptfoo/promptfoo/issues/7874)) ([846c6dd](https://github.com/promptfoo/promptfoo/commit/846c6dd25cf1e80de2afadecede3a79dde176e86))\n* **deps:** update dependency @openai/agents to ^0.4.9 ([#7763](https://github.com/promptfoo/promptfoo/issues/7763)) ([52dd162](https://github.com/promptfoo/promptfoo/commit/52dd16217734bd01f1b4b9a4f900023aadd473b6))\n* **deps:** update dependency @opencode-ai/sdk to ^1.2.9 ([#7819](https://github.com/promptfoo/promptfoo/issues/7819)) ([9a9cc51](https://github.com/promptfoo/promptfoo/commit/9a9cc51daa3c33cfdee001ad93b469bcff107faf))\n* **deps:** update dependency @tanstack/react-virtual to ^3.13.19 ([#7916](https://github.com/promptfoo/promptfoo/issues/7916)) ([cbc103a](https://github.com/promptfoo/promptfoo/commit/cbc103a308da22ce97177b0e98827fb48cde2be2))\n* **deps:** update dependency ajv to ^8.18.0 ([#7773](https://github.com/promptfoo/promptfoo/issues/7773)) ([7e5cac8](https://github.com/promptfoo/promptfoo/commit/7e5cac83d1d732149de8afc77d8e67363c66b22a))\n* **deps:** update dependency fast-xml-parser to ^5.3.6 ([#7769](https://github.com/promptfoo/promptfoo/issues/7769)) ([559d477](https://github.com/promptfoo/promptfoo/commit/559d4779197ba923b8a656d9e9d5b1f89e13a143))\n* **deps:** update dependency fast-xml-parser to ^5.3.7 ([#7857](https://github.com/promptfoo/promptfoo/issues/7857)) ([901945f](https://github.com/promptfoo/promptfoo/commit/901945fd7ed2eb981d1ddb39aad82030bee9d7d9))\n* **deps:** update dependency fast-xml-parser to ^5.4.1 ([#7934](https://github.com/promptfoo/promptfoo/issues/7934)) ([3b22b1d](https://github.com/promptfoo/promptfoo/commit/3b22b1dc66ac8e5c4c080b210c97ecb3eeb1a085))\n* **deps:** update dependency glob to ^13.0.4 ([#7807](https://github.com/promptfoo/promptfoo/issues/7807)) ([b0cc1d8](https://github.com/promptfoo/promptfoo/commit/b0cc1d8ab4d8deb8454f7c4cd51cdd622e3ebffa))\n* **deps:** update dependency glob to ^13.0.5 ([#7809](https://github.com/promptfoo/promptfoo/issues/7809)) ([6467da1](https://github.com/promptfoo/promptfoo/commit/6467da10adb2be77236e1a39699cc49642b0d7f0))\n* **deps:** update dependency glob to ^13.0.6 ([#7851](https://github.com/promptfoo/promptfoo/issues/7851)) ([4f1ec0f](https://github.com/promptfoo/promptfoo/commit/4f1ec0f61af440fc60d9a08d48b3f3d1a2eef06c))\n* **deps:** update dependency ink to ^6.8.0 ([#7844](https://github.com/promptfoo/promptfoo/issues/7844)) ([3e169d1](https://github.com/promptfoo/promptfoo/commit/3e169d155921b73ea6a9d93ffabe73f04e1a1f32))\n* **deps:** update dependency minimatch to ^10.2.1 ([#7808](https://github.com/promptfoo/promptfoo/issues/7808)) ([05d4226](https://github.com/promptfoo/promptfoo/commit/05d4226688d294734b75794fab5733025e52f3f2))\n* **deps:** update dependency minimatch to ^10.2.2 ([#7849](https://github.com/promptfoo/promptfoo/issues/7849)) ([052df9b](https://github.com/promptfoo/promptfoo/commit/052df9bf3ea45752c5b9d9eae8827d3b07d25b06))\n* **deps:** update dependency minimatch to ^10.2.3 ([#7930](https://github.com/promptfoo/promptfoo/issues/7930)) ([7cddccc](https://github.com/promptfoo/promptfoo/commit/7cddcccb4046805cc903ca0b008a9bedc794d98f))\n* **deps:** update dependency openai to ^6.22.0 ([#7766](https://github.com/promptfoo/promptfoo/issues/7766)) ([4e6d010](https://github.com/promptfoo/promptfoo/commit/4e6d0109db5d909cf3315cbae592c3073ae21857))\n* **deps:** update dependency simple-git to ^3.31.1 ([#7772](https://github.com/promptfoo/promptfoo/issues/7772)) ([40e7dbc](https://github.com/promptfoo/promptfoo/commit/40e7dbc3d03d1c5e6be759123796cb471dc6353f))\n* **deps:** update dependency simple-git to ^3.32.0 ([#7882](https://github.com/promptfoo/promptfoo/issues/7882)) ([92dc76e](https://github.com/promptfoo/promptfoo/commit/92dc76e4a983e8d9cba5cb9fbf3b69e94ac73def))\n* **deps:** update dependency simple-git to ^3.32.1 ([#7887](https://github.com/promptfoo/promptfoo/issues/7887)) ([027a321](https://github.com/promptfoo/promptfoo/commit/027a3210b25bd011f490f60f4bc8ff72c466cd2a))\n* **deps:** update dependency simple-git to ^3.32.2 ([#7907](https://github.com/promptfoo/promptfoo/issues/7907)) ([c9f4713](https://github.com/promptfoo/promptfoo/commit/c9f47138efbc89d95b83f808e4738f87a848219a))\n* **deps:** update dependency swiper to ^12.1.1 ([#7767](https://github.com/promptfoo/promptfoo/issues/7767)) ([225eaa0](https://github.com/promptfoo/promptfoo/commit/225eaa0d9f352ef13c11c469279ec90c3f89514f))\n* **deps:** update dependency swiper to ^12.1.2 ([#7828](https://github.com/promptfoo/promptfoo/issues/7828)) ([9dec8e7](https://github.com/promptfoo/promptfoo/commit/9dec8e798a8307a219672885621b3ab9a6980b04))\n* Dispatcher not getting set properly ([#7903](https://github.com/promptfoo/promptfoo/issues/7903)) ([d6ec797](https://github.com/promptfoo/promptfoo/commit/d6ec7973486e0ca03d5b2213580083b9f08474da))\n* **eval:** harden eval resume with serial loop abort and duplicate index detection ([#7606](https://github.com/promptfoo/promptfoo/issues/7606)) ([db05c6a](https://github.com/promptfoo/promptfoo/commit/db05c6a25c6f33ee79c557baac888aabe0feb652))\n* Preserve delimiting colons in Ruby-namespaced method names in `file://` references ([#7791](https://github.com/promptfoo/promptfoo/issues/7791)) ([1e97f3b](https://github.com/promptfoo/promptfoo/commit/1e97f3be0beec08478fc0764c8584f823bc9bb75))\n* **providers:** improve Claude Agent SDK tool call tracking ([#7821](https://github.com/promptfoo/promptfoo/issues/7821)) ([2a2749b](https://github.com/promptfoo/promptfoo/commit/2a2749bf21fa5811732dd2c8a5361482e3e24a7f))\n* **redteam:** abort scan on non-transient HTTP errors ([#7870](https://github.com/promptfoo/promptfoo/issues/7870)) ([05f4da4](https://github.com/promptfoo/promptfoo/commit/05f4da4485171df3f0cedf224d52eabf2afb210f))\n* **redteam:** align OWASP LLM04/05 labels ([#7846](https://github.com/promptfoo/promptfoo/issues/7846)) ([8f6bd03](https://github.com/promptfoo/promptfoo/commit/8f6bd03020cff69cc8252615d8e5457d929cb154))\n* **redteam:** use X icon for run cancel button ([#7865](https://github.com/promptfoo/promptfoo/issues/7865)) ([99d35ce](https://github.com/promptfoo/promptfoo/commit/99d35ce1208478ae2ed6eb3bb2ad41205123b8dc))\n* **ui:** use replace for URL search param updates to fix back button ([#7782](https://github.com/promptfoo/promptfoo/issues/7782)) ([1866835](https://github.com/promptfoo/promptfoo/commit/1866835541b285227dc556957c1ddb89f5e458eb))\n* **webui:** render inline base64 images from markdown syntax ([#7678](https://github.com/promptfoo/promptfoo/issues/7678)) ([bab239f](https://github.com/promptfoo/promptfoo/commit/bab239f78e61600b71c89617fd365846c5938302))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/287866488","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/287866488/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/287866488/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.120.25","id":287866488,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4RKH54","tag_name":"0.120.25","target_commitish":"0a43bcd99e89febff6529774746dc7c21ba34312","name":"0.120.25","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-02-18T20:50:16Z","updated_at":"2026-02-18T20:50:44Z","published_at":"2026-02-18T20:50:36Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.120.25","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.120.25","body":"## [0.120.25](https://github.com/promptfoo/promptfoo/compare/0.120.24...0.120.25) (2026-02-18)\n\n\n### Features\n\n* add regenerate button for suggested policies ([#7652](https://github.com/promptfoo/promptfoo/issues/7652)) ([2b09693](https://github.com/promptfoo/promptfoo/commit/2b096935c26ee148ad28f7bfe47ddad292ce9bd3))\n* **app:** add renderOption prop to Combobox component ([#7723](https://github.com/promptfoo/promptfoo/issues/7723)) ([a609016](https://github.com/promptfoo/promptfoo/commit/a609016ce3605f39e13274e99b32f5fd968518f4))\n* eval setup command to open eval setup web view ([#7663](https://github.com/promptfoo/promptfoo/issues/7663)) ([58c634f](https://github.com/promptfoo/promptfoo/commit/58c634fed8a350a63f63795bca6614649b55c353))\n* **eval:** support cloud UUID configs for eval -c ([#7661](https://github.com/promptfoo/promptfoo/issues/7661)) ([5175eba](https://github.com/promptfoo/promptfoo/commit/5175eba6312569d9fc532fcfbdbe6633c5bc6f07))\n* **fetch:** add PROMPTFOO_FETCH_CONNECTIONS env var to override HTTP pool size ([#7758](https://github.com/promptfoo/promptfoo/issues/7758)) ([535d30b](https://github.com/promptfoo/promptfoo/commit/535d30bf7360904b8c28b65acaebaf72a55bf4b8))\n* **providers:** add Claude Sonnet 4.6 support ([#7734](https://github.com/promptfoo/promptfoo/issues/7734)) ([2679911](https://github.com/promptfoo/promptfoo/commit/2679911e19d13f236d5cd3a42efc2d57500f094d))\n* **providers:** add GPT-5.3 model support to OpenAI Codex provider ([#7674](https://github.com/promptfoo/promptfoo/issues/7674)) ([2c0f588](https://github.com/promptfoo/promptfoo/commit/2c0f588f70309adb5976807c42d559ef0ff64be6))\n* **providers:** add OpenClaw multi-provider support ([#7562](https://github.com/promptfoo/promptfoo/issues/7562)) ([ee1a607](https://github.com/promptfoo/promptfoo/commit/ee1a6073c9e6a39ac19595b786a1ff5311404b1c))\n* **redteam:** store and display correct scan time ([#7591](https://github.com/promptfoo/promptfoo/issues/7591)) ([ca76e58](https://github.com/promptfoo/promptfoo/commit/ca76e5894be04a37a16837d85f631687950118cf))\n* **targetLink:** shared types and CLI helper for TargetLink probe communication ([#7638](https://github.com/promptfoo/promptfoo/issues/7638)) ([d82e4b1](https://github.com/promptfoo/promptfoo/commit/d82e4b1171bf840b08c395d4f4e34fccb5147139))\n\n\n### Bug Fixes\n\n* **ci:** correct calibreapp/image-actions tag reference ([#7677](https://github.com/promptfoo/promptfoo/issues/7677)) ([9a6ca07](https://github.com/promptfoo/promptfoo/commit/9a6ca071b11fef8afec0568b6314031e23ed6815))\n* **cli:** clarify missing config search hint ([#7721](https://github.com/promptfoo/promptfoo/issues/7721)) ([2942908](https://github.com/promptfoo/promptfoo/commit/294290834db8c8ef620a342c71b764236d4adfa6))\n* **deps:** update anthropic packages ([#7659](https://github.com/promptfoo/promptfoo/issues/7659)) ([4f2b2e9](https://github.com/promptfoo/promptfoo/commit/4f2b2e96b747ed92114a1be4cb8bb9f136b91b37))\n* **deps:** update dependency @anthropic-ai/sdk to ^0.73.0 ([#7604](https://github.com/promptfoo/promptfoo/issues/7604)) ([2b7abc7](https://github.com/promptfoo/promptfoo/commit/2b7abc7c2a2e2833d0d25ef9675f5f9bb5883177))\n* **deps:** update dependency @openai/agents to ^0.4.6 ([#7635](https://github.com/promptfoo/promptfoo/issues/7635)) ([d476c6a](https://github.com/promptfoo/promptfoo/commit/d476c6a5d29fd1eb8d103bdde351735a6090bf37))\n* **deps:** update dependency @openai/agents to ^0.4.7 ([#7724](https://github.com/promptfoo/promptfoo/issues/7724)) ([a0ae842](https://github.com/promptfoo/promptfoo/commit/a0ae842b305421d86caf2132e999d22d392a1e69))\n* **deps:** update dependency @openai/agents to ^0.4.8 ([#7748](https://github.com/promptfoo/promptfoo/issues/7748)) ([15a353f](https://github.com/promptfoo/promptfoo/commit/15a353f07b19e452581ee601ce96b29900fa2bf1))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.52 ([#7601](https://github.com/promptfoo/promptfoo/issues/7601)) ([b6aa8e4](https://github.com/promptfoo/promptfoo/commit/b6aa8e4acbad19f0e806e5e4ecf44c278e5b78e2))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.53 ([#7614](https://github.com/promptfoo/promptfoo/issues/7614)) ([9aec3d2](https://github.com/promptfoo/promptfoo/commit/9aec3d245de81a6740645a69e3dbb21dbb50e4bb))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.55 ([#7706](https://github.com/promptfoo/promptfoo/issues/7706)) ([6fb680b](https://github.com/promptfoo/promptfoo/commit/6fb680bad275ab15b306c9154b9e8340c3f18aaa))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.56 ([#7708](https://github.com/promptfoo/promptfoo/issues/7708)) ([99f8551](https://github.com/promptfoo/promptfoo/commit/99f855144a8b37aef51377aa3f13379f877d7e69))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.59 ([#7714](https://github.com/promptfoo/promptfoo/issues/7714)) ([951f6a1](https://github.com/promptfoo/promptfoo/commit/951f6a13f58d5adc2d515dad9a305f187ed71fc9))\n* **deps:** update dependency dotenv to ^17.2.4 ([#7607](https://github.com/promptfoo/promptfoo/issues/7607)) ([a44d36d](https://github.com/promptfoo/promptfoo/commit/a44d36dbd73c89d3d3161b5a1387464f68ebcc74))\n* **deps:** update dependency dotenv to ^17.3.1 ([#7749](https://github.com/promptfoo/promptfoo/issues/7749)) ([59dd96e](https://github.com/promptfoo/promptfoo/commit/59dd96e5fa0c30e37debc7d37f2939f664fcb7fe))\n* **deps:** update dependency fast-xml-parser to ^5.3.5 ([#7665](https://github.com/promptfoo/promptfoo/issues/7665)) ([c78b882](https://github.com/promptfoo/promptfoo/commit/c78b8829c2707144686e7030154f7ad4888db5ce))\n* **deps:** update dependency glob to ^13.0.2 ([#7703](https://github.com/promptfoo/promptfoo/issues/7703)) ([834fe37](https://github.com/promptfoo/promptfoo/commit/834fe37f2fc2a0d765602fcea1b167e610e63b48))\n* **deps:** update dependency glob to ^13.0.3 ([#7739](https://github.com/promptfoo/promptfoo/issues/7739)) ([11ff0df](https://github.com/promptfoo/promptfoo/commit/11ff0df44d3ae9c7616275422007f8e9ac970cad))\n* **deps:** update dependency ink to ^6.7.0 ([#7701](https://github.com/promptfoo/promptfoo/issues/7701)) ([51b5da8](https://github.com/promptfoo/promptfoo/commit/51b5da838311c4171b4eb5abc9b827e8d25ba6c1))\n* **deps:** update dependency lru-cache to ^11.2.6 ([#7704](https://github.com/promptfoo/promptfoo/issues/7704)) ([ed7a2de](https://github.com/promptfoo/promptfoo/commit/ed7a2de1e9df15acb2ba163e2a8e2e081910f7bf))\n* **deps:** update dependency mathjs to ^15.1.1 ([#7698](https://github.com/promptfoo/promptfoo/issues/7698)) ([3bc5d85](https://github.com/promptfoo/promptfoo/commit/3bc5d85d4506bc18af44d530bcbe04e51b2c425b))\n* **deps:** update dependency minimatch to ^10.2.0 ([#7740](https://github.com/promptfoo/promptfoo/issues/7740)) ([aa2a7fa](https://github.com/promptfoo/promptfoo/commit/aa2a7fa8aa4d092356bf5be8fb49ad7e90309622))\n* **deps:** update dependency openai to ^6.18.0 ([#7598](https://github.com/promptfoo/promptfoo/issues/7598)) ([7a83c00](https://github.com/promptfoo/promptfoo/commit/7a83c000e53854e81eacaeddda012b58568564fb))\n* **deps:** update dependency ora to ^9.3.0 ([#7594](https://github.com/promptfoo/promptfoo/issues/7594)) ([9125e12](https://github.com/promptfoo/promptfoo/commit/9125e125c9f20942e542c02bf061b43ee8b63840))\n* **deps:** update dependency proxy-from-env to v2 ([#7679](https://github.com/promptfoo/promptfoo/issues/7679)) ([06978cb](https://github.com/promptfoo/promptfoo/commit/06978cb512253db1061ef64ecff667f14ecf6d8d))\n* **deps:** update dependency undici to ^7.21.0 ([#7625](https://github.com/promptfoo/promptfoo/issues/7625)) ([1703a20](https://github.com/promptfoo/promptfoo/commit/1703a20e253e38fb19eaa35208e6014628e6b080))\n* **deps:** update mui packages to ^7.3.8 ([#7729](https://github.com/promptfoo/promptfoo/issues/7729)) ([a2c57b7](https://github.com/promptfoo/promptfoo/commit/a2c57b7dbf19526541b69bbce0ffa8b291c47790))\n* **deps:** update openai packages ([#7712](https://github.com/promptfoo/promptfoo/issues/7712)) ([0db7371](https://github.com/promptfoo/promptfoo/commit/0db73718dd36fb638d1ffa2ed799f0b2e6052c38))\n* **deps:** update opentelemetry ([#7743](https://github.com/promptfoo/promptfoo/issues/7743)) ([69b9a38](https://github.com/promptfoo/promptfoo/commit/69b9a387c071a3106956eff1c0d72de826790a0f))\n* **eval:** preserve provider config when using --providers flag ([#7720](https://github.com/promptfoo/promptfoo/issues/7720)) ([7192f20](https://github.com/promptfoo/promptfoo/commit/7192f209b6702c975b976293394f91e7c341a9e1))\n* **providers:** avoid codex sdk cached token double-counting ([#7617](https://github.com/promptfoo/promptfoo/issues/7617)) ([c4059b8](https://github.com/promptfoo/promptfoo/commit/c4059b877a180a1df52b5b768b1fc1a638aa4956))\n* **providers:** update Azure Mistral example and add Mistral-Large-3 pricing ([#7610](https://github.com/promptfoo/promptfoo/issues/7610)) ([8e2a28e](https://github.com/promptfoo/promptfoo/commit/8e2a28e8f0cd78f617ab9eec560486fedbdbe4b2))\n* **redteam:** count probes as target requests ([#7671](https://github.com/promptfoo/promptfoo/issues/7671)) ([bf2e305](https://github.com/promptfoo/promptfoo/commit/bf2e3054ccfa5f4011f7bd8b35f13d5f05d3e877))\n* **redteam:** fix severity card counts for custom policy vulnerabilities ([#7615](https://github.com/promptfoo/promptfoo/issues/7615)) ([4747f2a](https://github.com/promptfoo/promptfoo/commit/4747f2afa755b8453ba8c314eddb784378986261))\n* switch git hook install to husky prepare flow ([#7726](https://github.com/promptfoo/promptfoo/issues/7726)) ([0ed1634](https://github.com/promptfoo/promptfoo/commit/0ed16348912899c1b43c55512d24868adfe73ac1))\n* **table:** display sessionIds array from multi-turn strategies ([#7608](https://github.com/promptfoo/promptfoo/issues/7608)) ([0442aee](https://github.com/promptfoo/promptfoo/commit/0442aee2b479f7a843f286d6bdf509759234a4b2))\n* **util:** handle path-only URLs in sanitizeUrl ([#7752](https://github.com/promptfoo/promptfoo/issues/7752)) ([4d26d85](https://github.com/promptfoo/promptfoo/commit/4d26d85f016bbaa4606b46286a3983c24153a2c5))"},{"url":"https://api.github.com/repos/promptfoo/promptfoo/releases/285013310","assets_url":"https://api.github.com/repos/promptfoo/promptfoo/releases/285013310/assets","upload_url":"https://uploads.github.com/repos/promptfoo/promptfoo/releases/285013310/assets{?name,label}","html_url":"https://github.com/promptfoo/promptfoo/releases/tag/0.120.24","id":285013310,"author":{"login":"promptfoobot[bot]","id":245983264,"node_id":"BOT_kgDODqloIA","avatar_url":"https://avatars.githubusercontent.com/in/2349990?v=4","gravatar_id":"","url":"https://api.github.com/users/promptfoobot%5Bbot%5D","html_url":"https://github.com/apps/promptfoobot","followers_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/followers","following_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/repos","events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/promptfoobot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJcj3uc4Q_PU-","tag_name":"0.120.24","target_commitish":"72845c88641b9ed2b637c6262a1275943abeb715","name":"0.120.24","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-02-10T21:19:38Z","updated_at":"2026-02-10T21:20:05Z","published_at":"2026-02-10T21:20:00Z","assets":[],"tarball_url":"https://api.github.com/repos/promptfoo/promptfoo/tarball/0.120.24","zipball_url":"https://api.github.com/repos/promptfoo/promptfoo/zipball/0.120.24","body":"## [0.120.24](https://github.com/promptfoo/promptfoo/compare/0.120.23...0.120.24) (2026-02-10)\n\n\n### Features\n\n* add --filter-prompts option with MCP alignment ([#7451](https://github.com/promptfoo/promptfoo/issues/7451)) ([e9b53e2](https://github.com/promptfoo/promptfoo/commit/e9b53e2ac83df1f6e98bf9561a6a3c8d87d271af))\n* **eval:** add hidden column indicators and schema-based column visibility persistence ([#7536](https://github.com/promptfoo/promptfoo/issues/7536)) ([8fbeb60](https://github.com/promptfoo/promptfoo/commit/8fbeb60a1cbb2171b6fa53e548f2dacbffa8a31f))\n* **fetch:** add Cloudflare 524 timeout to transient error retry ([#7590](https://github.com/promptfoo/promptfoo/issues/7590)) ([e7c1c81](https://github.com/promptfoo/promptfoo/commit/e7c1c8152c4517c9fca24335b5955924cc0cf3d1))\n* **providers:** add Claude Opus 4.6 support across all platforms ([#7506](https://github.com/promptfoo/promptfoo/issues/7506)) ([850c3bf](https://github.com/promptfoo/promptfoo/commit/850c3bf9d38d3ab850e80f86c15ccd8c384b59a8))\n* **providers:** add pricing support for Google AI Studio models ([#7491](https://github.com/promptfoo/promptfoo/issues/7491)) ([ffcacd4](https://github.com/promptfoo/promptfoo/commit/ffcacd4b2a04ec670f26608bb6946e4c206741f9))\n* **providers:** disable MCP caching by default, add cache_mcp opt-in ([#7518](https://github.com/promptfoo/promptfoo/issues/7518)) ([3f224a6](https://github.com/promptfoo/promptfoo/commit/3f224a6d2be47fd31cc4260e1b1a673de82f87b8))\n* real estate plugins ([#7494](https://github.com/promptfoo/promptfoo/issues/7494)) ([ef92072](https://github.com/promptfoo/promptfoo/commit/ef9207295df0a848edb458670c70f3623ad68c6b))\n\n\n### Bug Fixes\n\n* **deps:** update dependency @modelcontextprotocol/sdk to ^1.26.0 ([#7588](https://github.com/promptfoo/promptfoo/issues/7588)) ([3902784](https://github.com/promptfoo/promptfoo/commit/3902784a78ad58294001accff0c4ab7033a789cd))\n* **deps:** update dependency @octokit/auth-app to ^8.2.0 ([#7560](https://github.com/promptfoo/promptfoo/issues/7560)) ([b7d9b4d](https://github.com/promptfoo/promptfoo/commit/b7d9b4d83361f7f03062e4f584727cd2ef8c7d1a))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.49 ([#7559](https://github.com/promptfoo/promptfoo/issues/7559)) ([08ebaae](https://github.com/promptfoo/promptfoo/commit/08ebaae059375ac7a0bbbd29bbfddb1b0a278050))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.50 ([#7578](https://github.com/promptfoo/promptfoo/issues/7578)) ([3697c4f](https://github.com/promptfoo/promptfoo/commit/3697c4f318d0a7d7a264b76d67dc39416736133a))\n* **deps:** update dependency @opencode-ai/sdk to ^1.1.51 ([#7580](https://github.com/promptfoo/promptfoo/issues/7580)) ([22630d1](https://github.com/promptfoo/promptfoo/commit/22630d14a223924f5d8949e912f331373c8a66f1))\n* **deps:** update dependency glob to ^13.0.1 ([#7568](https://github.com/promptfoo/promptfoo/issues/7568)) ([d783cdc](https://github.com/promptfoo/promptfoo/commit/d783cdc806c6bcac41179c343048dfd803cfd987))\n* **deps:** update dependency minimatch to ^10.1.2 ([#7570](https://github.com/promptfoo/promptfoo/issues/7570)) ([12d604c](https://github.com/promptfoo/promptfoo/commit/12d604c5af0229a9f64011f6982716db540ee49b))\n* **deps:** update dependency ora to ^9.2.0 ([#7581](https://github.com/promptfoo/promptfoo/issues/7581)) ([8f4fc1e](https://github.com/promptfoo/promptfoo/commit/8f4fc1ecd24ba282a724927a29c6838931dedb84))\n* **deps:** update dependency posthog-node to ~5.24.10 ([#7584](https://github.com/promptfoo/promptfoo/issues/7584)) ([d47b996](https://github.com/promptfoo/promptfoo/commit/d47b99621e3bf1eac80608f9f3f4bd77842c5f64))\n* **deps:** update dependency posthog-node to ~5.24.9 ([#7564](https://github.com/promptfoo/promptfoo/issues/7564)) ([644bc11](https://github.com/promptfoo/promptfoo/commit/644bc112f738f36c2054b98235c3eca76d7bffab))\n* **deps:** update dependency semver to ^7.7.4 ([#7602](https://github.com/promptfoo/promptfoo/issues/7602)) ([6882a4d](https://github.com/promptfoo/promptfoo/commit/6882a4d688e64f527c74dcf1ba45ff8f5e79f375))\n* **deps:** update openai packages ([#7577](https://github.com/promptfoo/promptfoo/issues/7577)) ([cc71973](https://github.com/promptfoo/promptfoo/commit/cc71973210c3ebefe55e993294cd03df7d4bc145))\n* **eval:** correct promptIdx alignment with test-level filtering ([#7544](https://github.com/promptfoo/promptfoo/issues/7544)) ([0f4ae84](https://github.com/promptfoo/promptfoo/commit/0f4ae84699f1d3836abde351b34c18e7bb1ec2dd))\n* **eval:** fix SSL \"bad record mac\" errors under concurrent API load ([#7466](https://github.com/promptfoo/promptfoo/issues/7466)) ([5eb903b](https://github.com/promptfoo/promptfoo/commit/5eb903b20a860f3af96410ba353f51ea4e650092))\n* **eval:** show more toggle for metrics in cells for evals ([#7530](https://github.com/promptfoo/promptfoo/issues/7530)) ([1367921](https://github.com/promptfoo/promptfoo/commit/1367921d626320cd1f4ff1885bb11f35f75f5026))\n* **huggingface:** concurrent dataset fetching ([#7423](https://github.com/promptfoo/promptfoo/issues/7423)) ([eefc8be](https://github.com/promptfoo/promptfoo/commit/eefc8be2112c7eb5c1b72d7774b389ac91bb79ec))\n* improve clarity of which model is being used in logging redteams ([#7508](https://github.com/promptfoo/promptfoo/issues/7508)) ([2e2a7cb](https://github.com/promptfoo/promptfoo/commit/2e2a7cb2ad9c6369e2851454410d3c4b2370f6b3))\n* **providers:** add missing Claude Opus 4.6 entries for Bedrock, Vertex, and OpenRouter ([#7543](https://github.com/promptfoo/promptfoo/issues/7543)) ([e20ae6a](https://github.com/promptfoo/promptfoo/commit/e20ae6ad3f780b5024f22ee76b4cac8218af604c))\n* **redteam:** deduplicate global grader examples (ENG-1780) ([#7593](https://github.com/promptfoo/promptfoo/issues/7593)) ([dddfc18](https://github.com/promptfoo/promptfoo/commit/dddfc185f27b21f2b5b2db9509d27666f6b02bdc))\n* **redteam:** preserve provider config when importing YAML in setup UI ([#7457](https://github.com/promptfoo/promptfoo/issues/7457)) ([18f848b](https://github.com/promptfoo/promptfoo/commit/18f848bba2a73569a096bd1a59964a8f59b59110))\n* stop plugin filters jumping in redteam setup ([#7557](https://github.com/promptfoo/promptfoo/issues/7557)) ([05685c0](https://github.com/promptfoo/promptfoo/commit/05685c0c972e9820729a62e9368ed03bee586457))"}]