zkSync isSystem: true in hardhat.config enables zksolc simulations for calling NonceHolder and ContractDeployer from custom accounts
Confusion to resolve: isSystem means two related but different things, and reading only the docs makes the hardhat config flag look like a security hole.
On zkEVM, isSystem is a per-call flag that unlocks privileged functions of system contracts such as ContractDeployer and NonceHolder. It has to be gated, because those functions break EVM assumptions — an unaware contract that calls ContractDeployer.create starts a contract creation attributed to its own caller, i.e. an external call that triggers another call with the original msg.sender.
Because of that danger, zksolc compiles everything in "safe" mode by default: it emits the flag only where the intent is unambiguous, e.g. A a = new A() compiles to a ContractDeployer.create call with the flag set. There is otherwise no user-facing syntax to raise it — the ideal a.call{isSystem: true}("...") does not exist.
Custom account abstraction needs NonceHolder.increaseMinNonce, which requires the flag, and the compiler cannot infer that intent. zksolc therefore recognises special call *simulations* that map to flagged calls, and those simulations are disabled by default because there is a vanishingly small chance production code collides with the patterns. Setting isSystem: true in hardhat.config (in the zksolc settings) turns the simulations on. Without it, helpers like SystemContractsCaller.systemCallWithPropagatedRevert do not compile into flagged calls and a custom account cannot manage its own nonce.
So the flag is a compiler capability, not a runtime privilege grant: it does not mark deployed bytecode as a system contract, and it does not let arbitrary test transactions impersonate one. Note that later zksolc releases renamed this setting away from isSystem, so check the option name for your compiler version.
Source: adapted from a Stack Exchange answer by Stanislav Breadless (question by Patrick Collins), https://ethereum.stackexchange.com/questions/162863/how-does-the-issystem-flag-work-for-zksync-projects — CC BY-SA 4.0