> ## Documentation Index
> Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Challenger configuration reference

> Reference for all op-challenger configuration options, covering CLI flags, environment variables, and default values.

This page catalogues every configuration option for the op-challenger, the
dispute game agent that monitors fault proof games on L1, challenges invalid
claims, and defends valid state transitions.

The flag tables below are generated directly from the op-challenger's flag
definitions in the monorepo (`op-challenger/flags`) at the release tag named
in the provenance line, and are regenerated when a new finalized release is
published, so they cannot silently fall behind. Every flag can also be set
through the environment variable listed next to it.

For step-by-step setup instructions — prestates, trace types, wallets, and
monitoring — see the
[challenger configuration guide](/chain-operators/guides/configuration/op-challenger-config-guide);
for how the fault proof system works, see the
[challenger explainer](/op-stack/fault-proofs/challenger).

## Flags

Generated from [`op-challenger/v1.9.3`](https://github.com/ethereum-optimism/optimism/releases/tag/op-challenger%2Fv1.9.3)
flag definitions. 88 flags: 4 required, 84 optional.

### Required flags

| Flag           | Description                                                             | Environment variable       |
| -------------- | ----------------------------------------------------------------------- | -------------------------- |
| `--datadir`    | Directory to store data generated as part of responding to games        | `OP_CHALLENGER_DATADIR`    |
| `--l1-beacon`  | Address of L1 Beacon API endpoint to use                                | `OP_CHALLENGER_L1_BEACON`  |
| `--l1-eth-rpc` | HTTP provider URL for L1.                                               | `OP_CHALLENGER_L1_ETH_RPC` |
| `--l2-eth-rpc` | URLs of L2 JSON-RPC endpoints to use (eth and debug namespace required) | `OP_CHALLENGER_L2_ETH_RPC` |

### Optional flags

| Flag                                    | Description                                                                                                                                                                                                                  | Default                   | Environment variable                                |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | --------------------------------------------------- |
| `--additional-bond-claimants`           | List of addresses to claim bonds for, in addition to the configured transaction sender                                                                                                                                       | —                         | `OP_CHALLENGER_ADDITIONAL_BOND_CLAIMANTS`           |
| `--cannon-bin`                          | Path to cannon executable to use when generating trace data (cannon game type only)                                                                                                                                          | —                         | `OP_CHALLENGER_CANNON_BIN`                          |
| `--cannon-depset-config`                | Interop dependency set config file (cannon game type only)                                                                                                                                                                   | —                         | `OP_CHALLENGER_CANNON_DEPSET_CONFIG`                |
| `--cannon-info-freq`                    | Frequency of cannon info log messages to generate in VM steps (cannon game type only)                                                                                                                                        | `10000000`                | `OP_CHALLENGER_CANNON_INFO_FREQ`                    |
| `--cannon-kona-depset-config`           | Interop dependency set config file (cannon-kona game type only)                                                                                                                                                              | —                         | `OP_CHALLENGER_CANNON_KONA_DEPSET_CONFIG`           |
| `--cannon-kona-l1-genesis`              | Path to the L1 genesis file. Only required if the L1 is not mainnet, sepolia, holesky, or hoodi.                                                                                                                             | —                         | `OP_CHALLENGER_CANNON_KONA_L1_GENESIS`              |
| `--cannon-kona-l2-genesis`              | Paths to the op-geth genesis file (cannon-kona game type only)                                                                                                                                                               | —                         | `OP_CHALLENGER_CANNON_KONA_L2_GENESIS`              |
| `--cannon-kona-prestate`                | Path to absolute prestate to use when generating trace data (cannon-kona game type only)                                                                                                                                     | —                         | `OP_CHALLENGER_CANNON_KONA_PRESTATE`                |
| `--cannon-kona-prestates-url`           | Base URL to absolute prestates to use when generating trace data. Prestates in this directory should be name as \<commitment>.bin.gz \<commitment>.json.gz or \<commitment>.json (cannon-kona game type only)                | —                         | `OP_CHALLENGER_CANNON_KONA_PRESTATES_URL`           |
| `--cannon-kona-rollup-config`           | Rollup chain parameters (cannon-kona game type only)                                                                                                                                                                         | —                         | `OP_CHALLENGER_CANNON_KONA_ROLLUP_CONFIG`           |
| `--cannon-kona-server`                  | Path to kona executable to use as pre-image oracle server when generating trace data (cannon-kona game type only)                                                                                                            | —                         | `OP_CHALLENGER_CANNON_KONA_SERVER`                  |
| `--cannon-l1-genesis`                   | Path to the L1 genesis file. Only required if the L1 is not mainnet, sepolia, holesky, or hoodi.                                                                                                                             | —                         | `OP_CHALLENGER_CANNON_L1_GENESIS`                   |
| `--cannon-l2-genesis`                   | Paths to the op-geth genesis file (cannon game type only)                                                                                                                                                                    | —                         | `OP_CHALLENGER_CANNON_L2_GENESIS`                   |
| `--cannon-prestate`                     | Path to absolute prestate to use when generating trace data (cannon game type only)                                                                                                                                          | —                         | `OP_CHALLENGER_CANNON_PRESTATE`                     |
| `--cannon-prestates-url`                | Base URL to absolute prestates to use when generating trace data. Prestates in this directory should be name as \<commitment>.bin.gz \<commitment>.json.gz or \<commitment>.json (cannon game type only)                     | —                         | `OP_CHALLENGER_CANNON_PRESTATES_URL`                |
| `--cannon-rollup-config`                | Rollup chain parameters (cannon game type only)                                                                                                                                                                              | —                         | `OP_CHALLENGER_CANNON_ROLLUP_CONFIG`                |
| `--cannon-server`                       | Path to executable to use as pre-image oracle server when generating trace data (cannon game type only)                                                                                                                      | —                         | `OP_CHALLENGER_CANNON_SERVER`                       |
| `--cannon-snapshot-freq`                | Frequency of cannon snapshots to generate in VM steps (cannon game type only)                                                                                                                                                | `1000000000`              | `OP_CHALLENGER_CANNON_SNAPSHOT_FREQ`                |
| `--depset-config`                       | Interop dependency set config file                                                                                                                                                                                           | —                         | `OP_CHALLENGER_DEPSET_CONFIG`                       |
| `--fee-limit-multiplier`                | The multiplier applied to fee suggestions to put a hard limit on fee increases                                                                                                                                               | `5`                       | `OP_CHALLENGER_TXMGR_FEE_LIMIT_MULTIPLIER`          |
| `--game-allowlist`                      | List of Fault Game contract addresses the challenger is allowed to play. If empty, the challenger will play all games.                                                                                                       | —                         | `OP_CHALLENGER_GAME_ALLOWLIST`                      |
| `--game-factory-address`                | Address of the fault game factory contract.                                                                                                                                                                                  | —                         | `OP_CHALLENGER_GAME_FACTORY_ADDRESS`                |
| `--game-types`                          | The game types to support. Valid options: alphabet, cannon, cannon-kona, permissioned, fast, super-cannon-kona, super-permissioned, zk                                                                                       | `"cannon", "cannon-kona"` | `OP_CHALLENGER_GAME_TYPES`                          |
| `--game-window`                         | The time window which the challenger will look for games to progress and claim bonds. This should include a buffer for the challenger to claim bonds for games outside the maximum game duration.                            | `672h0m0s`                | `OP_CHALLENGER_GAME_WINDOW`                         |
| `--hd-path`                             | The HD path used to derive the sequencer wallet from the mnemonic. The mnemonic flag must also be set.                                                                                                                       | —                         | `OP_CHALLENGER_HD_PATH`                             |
| `--http-poll-interval`                  | Polling interval for latest-block subscription when using an HTTP RPC provider.                                                                                                                                              | `12s`                     | `OP_CHALLENGER_HTTP_POLL_INTERVAL`                  |
| `--l1-genesis`                          | Path to the L1 genesis file. Only required if the L1 is not mainnet, sepolia, holesky, or hoodi.                                                                                                                             | —                         | `OP_CHALLENGER_L1_GENESIS`                          |
| `--l1-rpc-kind`                         | The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus reduce costs. Valid options: alchemy, quicknode, infura, parity, nethermind, debug\_geth, erigon, basic, any, standard             | `standard`                | `OP_CHALLENGER_L1_RPC_KIND`                         |
| `--l2-experimental-eth-rpc`             | L2 Address of L2 JSON-RPC endpoint to use (eth and debug namespace required with execution witness support) (cannon game type only)                                                                                          | —                         | `OP_CHALLENGER_L2_EXPERIMENTAL_ETH_RPC`             |
| `--l2-genesis`                          | Paths to the op-geth genesis file                                                                                                                                                                                            | —                         | `OP_CHALLENGER_L2_GENESIS`                          |
| `--log.color`                           | Color the log output if in terminal mode                                                                                                                                                                                     | `false`                   | `OP_CHALLENGER_LOG_COLOR`                           |
| `--log.format`                          | Format the log output. Supported formats: text, terminal, logfmt, logfmtms, json, jsonms                                                                                                                                     | `text`                    | `OP_CHALLENGER_LOG_FORMAT`                          |
| `--log.level`                           | The lowest log level that will be output                                                                                                                                                                                     | `INFO`                    | `OP_CHALLENGER_LOG_LEVEL`                           |
| `--log.pid`                             | Show pid in the log                                                                                                                                                                                                          | `false`                   | `OP_CHALLENGER_LOG_PID`                             |
| `--max-concurrency`                     | Maximum number of threads to use when progressing games                                                                                                                                                                      | `4`                       | `OP_CHALLENGER_MAX_CONCURRENCY`                     |
| `--max-pending-tx`                      | The maximum number of pending transactions. 0 for no limit.                                                                                                                                                                  | `10`                      | `OP_CHALLENGER_MAX_PENDING_TX`                      |
| `--metrics.addr`                        | Metrics listening address                                                                                                                                                                                                    | `"0.0.0.0"`               | `OP_CHALLENGER_METRICS_ADDR`                        |
| `--metrics.enabled`                     | Enable the metrics server                                                                                                                                                                                                    | `false`                   | `OP_CHALLENGER_METRICS_ENABLED`                     |
| `--metrics.port`                        | Metrics listening port                                                                                                                                                                                                       | `7300`                    | `OP_CHALLENGER_METRICS_PORT`                        |
| `--min-update-interval`                 | Minimum time between scheduling update cycles based on the L1 block time.                                                                                                                                                    | `0s`                      | `OP_CHALLENGER_MIN_UPDATE_INTERVAL`                 |
| `--mnemonic`                            | The mnemonic used to derive the wallets for either the service                                                                                                                                                               | —                         | `OP_CHALLENGER_MNEMONIC`                            |
| `--network`                             | Predefined network selection. Available networks: every chain bundled from the [superchain-registry](https://github.com/ethereum-optimism/superchain-registry) at the release; run `op-challenger --help` for the exact list | —                         | `OP_CHALLENGER_NETWORK`                             |
| `--network-timeout`                     | Timeout for all network operations                                                                                                                                                                                           | `10s`                     | `OP_CHALLENGER_NETWORK_TIMEOUT`                     |
| `--num-confirmations`                   | Number of confirmations which we will wait after sending a transaction                                                                                                                                                       | `3`                       | `OP_CHALLENGER_NUM_CONFIRMATIONS`                   |
| `--pprof.addr`                          | pprof listening address                                                                                                                                                                                                      | `"0.0.0.0"`               | `OP_CHALLENGER_PPROF_ADDR`                          |
| `--pprof.enabled`                       | Enable the pprof server                                                                                                                                                                                                      | `false`                   | `OP_CHALLENGER_PPROF_ENABLED`                       |
| `--pprof.path`                          | pprof file path. If it is a directory, the path is \{dir}/\{profileType}.prof                                                                                                                                                | —                         | `OP_CHALLENGER_PPROF_PATH`                          |
| `--pprof.port`                          | pprof listening port                                                                                                                                                                                                         | `6060`                    | `OP_CHALLENGER_PPROF_PORT`                          |
| `--pprof.type`                          | pprof profile type. One of cpu, heap, goroutine, threadcreate, block, mutex, allocs                                                                                                                                          | —                         | `OP_CHALLENGER_PPROF_TYPE`                          |
| `--prestates-url`                       | Base URL to absolute prestates to use when generating trace data. Prestates in this directory should be name as \<commitment>.bin.gz \<commitment>.json.gz or \<commitment>.json                                             | —                         | `OP_CHALLENGER_PRESTATES_URL`                       |
| `--private-key`                         | The private key to use with the service. Must not be used with mnemonic.                                                                                                                                                     | —                         | `OP_CHALLENGER_PRIVATE_KEY`                         |
| `--response-delay`                      | Delay before responding to game actions to slow down game progression.                                                                                                                                                       | `0s`                      | `OP_CHALLENGER_RESPONSE_DELAY`                      |
| `--response-delay-after`                | Number of responses after which to start applying the delay (0 = from first response).                                                                                                                                       | `0`                       | `OP_CHALLENGER_RESPONSE_DELAY_AFTER`                |
| `--resubmission-timeout`                | Duration we will wait before resubmitting a transaction to L1                                                                                                                                                                | `24s`                     | `OP_CHALLENGER_RESUBMISSION_TIMEOUT`                |
| `--rollup-config`                       | Rollup chain parameters                                                                                                                                                                                                      | —                         | `OP_CHALLENGER_ROLLUP_CONFIG`                       |
| `--rollup-rpc`                          | HTTP provider URL for the rollup node                                                                                                                                                                                        | —                         | `OP_CHALLENGER_ROLLUP_RPC`                          |
| `--safe-abort-nonce-too-low-count`      | Number of ErrNonceTooLow observations required to give up on a tx at a particular nonce without receiving confirmation                                                                                                       | `3`                       | `OP_CHALLENGER_SAFE_ABORT_NONCE_TOO_LOW_COUNT`      |
| `--selective-claim-resolution`          | Only resolve claims for the configured claimants                                                                                                                                                                             | `false`                   | `OP_CHALLENGER_SELECTIVE_CLAIM_RESOLUTION`          |
| `--signer.address`                      | Address the signer is signing requests for                                                                                                                                                                                   | —                         | `OP_CHALLENGER_SIGNER_ADDRESS`                      |
| `--signer.endpoint`                     | Signer endpoint the client will connect to                                                                                                                                                                                   | —                         | `OP_CHALLENGER_SIGNER_ENDPOINT`                     |
| `--signer.header`                       | Headers to pass to the remote signer. Format `key=value`. Value can contain any character allowed in a HTTP header. When using env vars, split with commas. When using flags one key value pair per flag.                    | —                         | `OP_CHALLENGER_SIGNER_HEADER`                       |
| `--signer.tls.ca`                       | tls ca cert path                                                                                                                                                                                                             | `"tls/ca.crt"`            | `OP_CHALLENGER_SIGNER_TLS_CA`                       |
| `--signer.tls.cert`                     | tls cert path                                                                                                                                                                                                                | `"tls/tls.crt"`           | `OP_CHALLENGER_SIGNER_TLS_CERT`                     |
| `--signer.tls.enabled`                  | Enable or disable TLS client authentication for the signer                                                                                                                                                                   | `true`                    | `OP_CHALLENGER_SIGNER_TLS_ENABLED`                  |
| `--signer.tls.key`                      | tls key                                                                                                                                                                                                                      | `"tls/tls.key"`           | `OP_CHALLENGER_SIGNER_TLS_KEY`                      |
| `--super-cannon-kona-depset-config`     | Interop dependency set config file (super-cannon-kona game type only)                                                                                                                                                        | —                         | `OP_CHALLENGER_SUPER_CANNON_KONA_DEPSET_CONFIG`     |
| `--super-cannon-kona-l1-genesis`        | Path to the L1 genesis file. Only required if the L1 is not mainnet, sepolia, holesky, or hoodi.                                                                                                                             | —                         | `OP_CHALLENGER_SUPER_CANNON_KONA_L1_GENESIS`        |
| `--super-cannon-kona-l2-genesis`        | Paths to the op-geth genesis file (super-cannon-kona game type only)                                                                                                                                                         | —                         | `OP_CHALLENGER_SUPER_CANNON_KONA_L2_GENESIS`        |
| `--super-cannon-kona-prestates-url`     | Base URL to absolute prestates to use when generating trace data. Prestates in this directory should be name as \<commitment>.bin.gz \<commitment>.json.gz or \<commitment>.json (super-cannon-kona game type only)          | —                         | `OP_CHALLENGER_SUPER_CANNON_KONA_PRESTATES_URL`     |
| `--super-cannon-kona-rollup-config`     | Rollup chain parameters (super-cannon-kona game type only)                                                                                                                                                                   | —                         | `OP_CHALLENGER_SUPER_CANNON_KONA_ROLLUP_CONFIG`     |
| `--supernode-rpc`                       | Provider URL for supernode roots                                                                                                                                                                                             | —                         | `OP_CHALLENGER_SUPERNODE_RPC`                       |
| `--txmgr.already-published-custom-errs` | List of custom RPC error messages that indicate that a transaction has already been published.                                                                                                                               | —                         | `OP_CHALLENGER_TXMGR_ALREADY_PUBLISHED_CUSTOM_ERRS` |
| `--txmgr.cell-proof-time`               | Enables cell proofs in blob transactions for Fusaka (EIP-7742) compatibility from the provided unix timestamp. Should be set to the L1 Fusaka time. May be left blank for Ethereum Mainnet, Sepolia, Holesky, or Hoodi L1s.  | `18446744073709551615`    | `OP_CHALLENGER_TXMGR_CELL_PROOF_TIME`               |
| `--txmgr.fee-limit-threshold`           | The minimum threshold (in GWei) at which fee bumping starts to be capped. Allows arbitrary fee bumps below this threshold.                                                                                                   | `100`                     | `OP_CHALLENGER_TXMGR_FEE_LIMIT_THRESHOLD`           |
| `--txmgr.max-basefee`                   | Enforces a maximum base fee (in GWei) to assume when determining tx fees, `TxMgr` returns an error when exceeded. Disabled by default.                                                                                       | `0`                       | `OP_CHALLENGER_TXMGR_MAX_BASEFEE`                   |
| `--txmgr.max-retries`                   | Maximum number of times to resubmit a transaction to L1 on a transient error. Set to 0 to disable retries.                                                                                                                   | `10`                      | `OP_CHALLENGER_TXMGR_MAX_RETRIES`                   |
| `--txmgr.max-tip-cap`                   | Enforces a maximum tip cap (in GWei) to use when determining tx fees, `TxMgr` returns an error when exceeded. Disabled by default.                                                                                           | `0`                       | `OP_CHALLENGER_TXMGR_MAX_TIP_CAP`                   |
| `--txmgr.min-basefee`                   | Enforces a minimum base fee (in GWei) to assume when determining tx fees. 1 GWei by default.                                                                                                                                 | `1`                       | `OP_CHALLENGER_TXMGR_MIN_BASEFEE`                   |
| `--txmgr.min-tip-cap`                   | Enforces a minimum tip cap (in GWei) to use when determining tx fees. 1 GWei by default.                                                                                                                                     | `1`                       | `OP_CHALLENGER_TXMGR_MIN_TIP_CAP`                   |
| `--txmgr.not-in-mempool-timeout`        | Timeout for aborting a tx send if the tx does not make it to the mempool.                                                                                                                                                    | `1m0s`                    | `OP_CHALLENGER_TXMGR_TX_NOT_IN_MEMPOOL_TIMEOUT`     |
| `--txmgr.rebroadcast-interval`          | Interval at which a published transaction will be rebroadcasted if it has not yet been mined. Should be less than ResubmissionTimeout to have an effect.                                                                     | `0s`                      | `OP_CHALLENGER_TXMGR_REBROADCAST_INTERVAL`          |
| `--txmgr.receipt-query-interval`        | Frequency to poll for receipts                                                                                                                                                                                               | `12s`                     | `OP_CHALLENGER_TXMGR_RECEIPT_QUERY_INTERVAL`        |
| `--txmgr.retry-interval`                | Duration we will wait before resubmitting a transaction to L1 on a transient error. Values \<= 0 will result in retrying immediately. Should be less than ResubmissionTimeout to have an effect.                             | `1s`                      | `OP_CHALLENGER_TXMGR_RETRY_INTERVAL`                |
| `--txmgr.send-timeout`                  | Timeout for sending transactions. If 0 it is disabled.                                                                                                                                                                       | `2m0s`                    | `OP_CHALLENGER_TXMGR_TX_SEND_TIMEOUT`               |

## Notes on selected flags

### Conditionally required flags

The required table above lists the flags op-challenger always checks at
startup. Additional flags become required depending on the configuration: the
chain must be identified by `--network` or by `--game-factory-address`, and
each enabled game type requires its trace-execution flags (for example the
`cannon-kona` game type requires the kona server and an absolute prestate via
`--cannon-kona-prestate` or `--cannon-kona-prestates-url`).

### network

When `--network` is set to a chain bundled from the superchain-registry, the
`--game-factory-address` is resolved automatically from the registry and does
not need to be set.

### game-types

Selects which dispute game types the challenger plays. Which type defends
your chain depends on the protocol version it runs; see the
[challenger configuration guide](/chain-operators/guides/configuration/op-challenger-config-guide)
for choosing game types, trace types, and the matching prestates.

### cannon-\* and cannon-kona-\*

The `cannon-*` flags apply only when a cannon-based game type is enabled, and
the `cannon-kona-*` variants only to the `cannon-kona` game type. Each of
these settings has a default variant plus a game-type-specific variant that
overrides it (the `(<game type> game type only)` suffix in the table above).

Note that op-program, the fault proof program the non-kona cannon game types
execute, has
[reached end of support](/notices/op-geth-deprecation), so only the kona
variants are still being maintained.

## Utility subcommands

Beyond running the challenger service, the `op-challenger` binary provides
utility subcommands for inspecting and interacting with dispute games:
`list-games`, `list-claims`, `list-credits`, `create-game`, `move`,
`resolve`, `resolve-claim`, and `run-trace`. Each takes its own flags; run
`op-challenger <subcommand> --help` for details.
