> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.getfoundry.sh/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# Changelog

## v1.7.1 (2026-05-08)

# Foundry v1.7.1

A patch release on top of [v1.7.0](https://github.com/foundry-rs/foundry/releases/tag/v1.7.0) with cherry-picked correctness fixes for cheatcodes, EVM forking, CLI, `forge`, and `cast`, plus further release-pipeline hardening (updated release version string construction, signed archives & SBOMs).

***

## Cheatcodes

Reverter-address enforcement for CREATE frames, value transfers for payable mock calls, preserved reverts under `expectEmit`, and a fix for the spurious `solc 0.8.35` `error` keyword warning.

<details open>
<summary><b>Cheatcode fixes (4 PRs)</b></summary>

* fix(cheatcodes): fix solc 0.8.35 `error` keyword warning ([#14509](https://github.com/foundry-rs/foundry/pull/14509)) by @figtracer
* fix(cheatcodes): transfer value for payable mock calls ([#14547](https://github.com/foundry-rs/foundry/pull/14547)) by @srdtrk
* fix(cheatcodes): enforce `expectRevert` reverter address for CREATE frames ([#14615](https://github.com/foundry-rs/foundry/pull/14615)) by @mablr
* fix(cheatcodes): preserve reverts with `expectEmit` ([#14619](https://github.com/foundry-rs/foundry/pull/14619)) by @srdtrk

</details>

***

## EVM

Correctness fixes for fork state-snapshot lookups and CREATE address preservation in isolation mode.

<details open>
<summary><b>EVM fixes (2 PRs)</b></summary>

* fix(evm): query `state_snapshot.storage` in `ForkDbStateSnapshot::storage_ref` ([#14007](https://github.com/foundry-rs/foundry/pull/14007)) by @gutonosa
* fix(evm): preserve `CREATE` address on revert in isolation mode ([#14637](https://github.com/foundry-rs/foundry/pull/14637)) by @mablr

</details>

***

## Forge

Tempo's `forge init` template now uses `network = "tempo"` with populated default `rpc_endpoints`, `forge test` ignores `ETH_RPC_URL` for forking, `--fuzz-seed` is finally honored by `forge coverage`, and Tempo creates are encoded as AA calls.

<details open>
<summary><b>Forge changes (4 PRs)</b></summary>

* feat(forge): use `network = "tempo"` and add `rpc_endpoints` in tempo template ([#14528](https://github.com/foundry-rs/foundry/pull/14528)) by @zerosnacks
* fix(forge): ignore `ETH_RPC_URL` for test forking ([#14555](https://github.com/foundry-rs/foundry/pull/14555)) by @figtracer
* fix(forge): encode Tempo creates as AA calls ([#14585](https://github.com/foundry-rs/foundry/pull/14585)) by @figtracer
* fix(forge): `--fuzz-seed` parameter is not effective in `forge coverage` ([#14610](https://github.com/foundry-rs/foundry/pull/14610)) by @wtdcode

</details>

***

## Cast

Consistent `--json` output shapes for the `keychain` subcommands.

<details open>
<summary><b>Cast fixes (1 PR)</b></summary>

* fix(cast): consistent `--json` output for `keychain` subcommands ([#14590](https://github.com/foundry-rs/foundry/pull/14590)) by @mablr

</details>

***

## Config

The `network = "tempo"` key no longer triggers the unknown-key warning, and serialization of `NetworkConfigs` is canonicalized so `forge config` always emits the resolved network.

<details open>
<summary><b>Config fixes (1 PR)</b></summary>

* fix(config): suppress spurious unknown-key warning for `network` ([#14534](https://github.com/foundry-rs/foundry/pull/14534)) by @zerosnacks

</details>

***

## CLI

Fixes the `jsonwebtoken` `CryptoProvider` startup panic by selecting `aws_lc_rs` at compile time, and corrects release version metadata for immutable tags. Also bumps the version to `1.7.1` and tightens `vm.getFoundryVersion()` / `foundryVersionCmp` / `foundryVersionAtLeast` to tolerate the new SemVer build-metadata format.

<details open>
<summary><b>CLI fixes (2 PRs)</b></summary>

* fix(cli): fix `jsonwebtoken` panic ([#14562](https://github.com/foundry-rs/foundry/pull/14562)) by @pepyakin
* fix(cli): fix release version strings for immutable tags, bump to 1.7.1 ([#14496](https://github.com/foundry-rs/foundry/pull/14496)) by @decofe

</details>

***

## CI / Release pipeline

Release archives and Docker images are now signed with `cosign`, per-archive SHA256 + SPDX SBOMs (Syft) are emitted, and Sigstore-signed SLSA provenance attestations are published. The Tempo CI workflow on `release-1.7.1` was realigned with master.

<details open>
<summary><b>CI changes (3 PRs)</b></summary>

* ci: sign release archives, docker images, and publish SBOMs ([#14563](https://github.com/foundry-rs/foundry/pull/14563)) by @grandizzy
* fix(ci): increase permissions for the enhanced attestation writing ([#14584](https://github.com/foundry-rs/foundry/pull/14584)) by @zerosnacks
* fix(ci): use `PATH_USD` fallback fee token in Mail templates ([#14546](https://github.com/foundry-rs/foundry/pull/14546)) by @mablr

</details>

***

## Tests & Tooling

Compiler bumped to `0.8.35` for tests, `forge-std` test fixtures bumped to a newer rev, and clippy lints fixed under newer toolchains so CI is green on this branch.

<details open>
<summary><b>Tests & tooling changes (3 PRs)</b></summary>

* chore: bump compiler version to 0.8.35 for tests ([#14524](https://github.com/foundry-rs/foundry/pull/14524)) by @zerosnacks
* fix(ext): bump forge-std commit in external integration tests ([#14504](https://github.com/foundry-rs/foundry/pull/14504)) by @zerosnacks
* chore(tests): bump forge-std version ([#14510](https://github.com/foundry-rs/foundry/pull/14510))
* chore(clippy): fix `for_kv_map` and `useless_borrows_in_formatting` ([#14554](https://github.com/foundry-rs/foundry/pull/14554)) by @stevencartavia

</details>

***

## Notes on the cherry-pick

* **#14590** was cherry-picked partially: the `{ "remaining": ... }` JSON output object change is included; the new `crates/cast/tests/cli/keychain.rs` test file is **not**, because the `keychain_rl_json_is_object` test depends on Tempo deps newer than this branch.
* The Tempo CI workflow alignment is a backport of #14501, #14537, and #14556 from `master`. The `Check Tempo fork schedule compatibility` step is intentionally omitted — the underlying `tempo::tests::test_fork_schedule_parses_configured_rpcs` test was added in #14485 (Tempo deps bump) which is not part of v1.7.1.

***

## Full Changelog

[v1.7.0...v1.7.1](https://github.com/foundry-rs/foundry/compare/v1.7.0...v1.7.1)
