## Commands

| | |
| --- | --- |
| [`aquery`](#aquery) | Analyzes the given targets and queries the action graph. |
| [`build`](#build) | Builds the specified targets. |
| [`canonicalize-flags`](#canonicalize-flags) | Canonicalizes a list of bazel options. |
| [`clean`](#clean) | Removes output files and optionally stops the server. |
| [`coverage`](#coverage) | Generates code coverage report for specified test targets. |
| [`cquery`](#cquery) | Loads, analyzes, and queries the specified targets w/ configurations. |
| [`dump`](#dump) | Dumps the internal state of the bazel server process. |
| [`fetch`](#fetch) | Fetches external repositories that are prerequisites to the targets. |
| [`help`](#help) | Prints help for commands, or the index. |
| [`info`](#info) | Displays runtime info about the bazel server. |
| [`license`](#license) | Prints the license of this software. |
| [`mobile-install`](#mobile-install) | Installs targets to mobile devices. |
| [`mod`](#mod) | Queries the Bzlmod external dependency graph |
| [`print_action`](#print_action) | Prints the command line args for compiling a file. |
| [`query`](#query) | Executes a dependency graph query. |
| [`run`](#run) | Runs the specified target. |
| [`shutdown`](#shutdown) | Stops the bazel server. |
| [`test`](#test) | Builds and runs the specified test targets. |
| [`vendor`](#vendor) | Fetches external repositories into a folder specified by the flag --vendor_dir. |
| [`version`](#version) | Prints version information for bazel. |

## Startup Options

Options that appear before the command and are parsed by the client

<ParamField path="--[no]autodetect_server_javabase" type="boolean" default="true">
  When --noautodetect_server_javabase is passed, Bazel does not fall back to the local JDK for running the bazel server and instead exits.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]batch" type="boolean" default="false" deprecated>
  If set, Bazel will be run as just a client process without a server, instead of in the standard client/server mode. This is deprecated and will be removed, please prefer shutting down the server explicitly if you wish to avoid lingering servers.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`deprecated`](#metadata_tag_DEPRECATED)
</ParamField>

<ParamField path="--[no]batch_cpu_scheduling" type="boolean" default="false">
  Only on Linux; use 'batch' CPU scheduling for Blaze. This policy is useful for workloads that are non-interactive, but do not want to lower their nice value. See 'man 2 sched_setscheduler'. If false, then Bazel does not perform a system call.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--bazelrc" type="path">
  The location of the user .bazelrc file containing default values of Bazel options.
  `/dev/null` indicates that all further `--bazelrc`s will be ignored, which is useful to
  disable the search for a user rc file, e.g. in release builds.
  This option can also be specified multiple times. e.g. with
  `--bazelrc=x.rc --bazelrc=y.rc --bazelrc=/dev/null --bazelrc=z.rc`.

  - `x.rc` and `y.rc` are read.
  - `z.rc` is ignored due to the prior `/dev/null`.
  If unspecified, Bazel uses the first `.bazelrc` file it finds in
  the following two locations: the workspace directory, then the user's home
  directory.

  Note: command line options will always supersede any option in bazelrc.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]block_for_lock" type="boolean" default="true">
  When --noblock_for_lock is passed, Bazel does not wait for a running command to complete, but instead exits immediately.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]client_debug" type="boolean" default="false">
  If true, log debug information from the client to stderr. Changing this option will not cause the server to restart.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--connect_timeout_secs" type="an integer" default="30">
  The amount of time the client waits for each attempt to connect to the server

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--digest_function" type="hash function" default="see description">
  The hash function to use when computing file digests.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--experimental_cgroup_parent" type="path" default="see description">
  The cgroup where to start the bazel server as an absolute path. The server process will be started in the specified cgroup for each supported controller. For example, if the value of this flag is /build/bazel and the cpu and memory controllers are mounted respectively on /sys/fs/cgroup/cpu and /sys/fs/cgroup/memory, the server will be started in the cgroups /sys/fs/cgroup/cpu/build/bazel and /sys/fs/cgroup/memory/build/bazel.It is not an error if the specified cgroup is not writable for one or more of the controllers. This options does not have any effect on platforms that do not support cgroups.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_run_in_user_cgroup" type="boolean" default="false">
  If true, the Bazel server will be run with systemd-run, and the user will own the cgroup. This flag only takes effect on Linux.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--extra_classpath" type="a string">
  A colon-separated list of classpath entries to be added to the classpath of the Bazel server.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--failure_detail_out" type="path" default="see description">
  If set, specifies a location to write a failure_detail protobuf message if the server experiences a failure and cannot report it via gRPC, as normal. Otherwise, the location will be &#36;&lcub;OUTPUT_BASE&rcub;/failure_detail.rawproto.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]home_rc" type="boolean" default="true">
  Whether or not to look for the home bazelrc file at `$HOME/.bazelrc`

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]idle_server_tasks" type="boolean" default="true">
  Run System.gc() when the server is idle

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]ignore_all_rc_files" type="boolean" default="false">
  Disables all rc files, regardless of the values of other rc-modifying flags, even if these flags come later in the list of startup options.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--io_nice_level" type="&lcub;-1,0,1,2,3,4,5,6,7&rcub;" default="-1">
  Only on Linux; set a level from 0-7 for best-effort IO scheduling using the sys_ioprio_set system call. 0 is highest priority, 7 is lowest. The anticipatory scheduler may only honor up to priority 4. If set to a negative value, then Bazel does not perform a system call.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--local_startup_timeout_secs" type="an integer" default="120">
  The maximum amount of time the client waits to connect to the server

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--macos_qos_class" type="a string" default="default">
  Sets the QoS service class of the bazel server when running on macOS. This flag has no effect on all other platforms but is supported to ensure rc files can be shared among them without changes. Possible values are: user-interactive, user-initiated, default, utility, and background.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--max_idle_secs" type="integer" default="10800">
  The number of seconds the build server will wait idling before shutting down. Zero means that the server will never shutdown. This is only read on server-startup, changing this option will not cause the server to restart.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--output_base" type="path" default="see description">
  If set, specifies the output location to which all build output will be written. Otherwise, the location will be &#36;&lcub;OUTPUT_ROOT&rcub;/*blaze*&#36;&lcub;USER&rcub;/&#36;&lcub;MD5_OF_WORKSPACE_ROOT&rcub;. Note: If you specify a different option from one to the next Bazel invocation for this value, you'll likely start up a new, additional Bazel server. Bazel starts exactly one server per specified output base. Typically there is one output base per workspace - however, with this option you may have multiple output bases per workspace and thereby run multiple builds for the same client on the same machine concurrently. See 'bazel help shutdown' on how to shutdown a Bazel server.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--output_user_root" type="path" default="see description">
  The user-specific directory beneath which all build outputs are written; by default, this is a function of &#36;USER, but by specifying a constant, build outputs can be shared between collaborating users.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]preemptible" type="boolean" default="false">
  If true, the command can be preempted if another command is started.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]quiet" type="boolean" default="false">
  If true, no informational messages are emitted on the console, only errors. Changing this option will not cause the server to restart.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--server_jvm_out" type="path" default="see description">
  The location to write the server's JVM's output. If unset then defaults to a location in output_base.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]shutdown_on_low_sys_mem" type="boolean" default="false">
  If max_idle_secs is set and the build server has been idle for a while, shut down the server when the system is low on free RAM. Linux and MacOS only.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]system_rc" type="boolean" default="true">
  Whether or not to look for the system-wide bazelrc.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]unlimit_coredumps" type="boolean" default="false">
  Raises the soft coredump limit to the hard limit to make coredumps of the server (including the JVM) and the client possible under common conditions. Stick this flag in your bazelrc once and forget about it so that you get coredumps when you actually encounter a condition that triggers them.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]windows_enable_symlinks" type="boolean" default="false">
  If true, real symbolic links will be created on Windows instead of file copying. Requires Windows developer mode to be enabled and Windows 10 version 1703 or greater.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]workspace_rc" type="boolean" default="true">
  Whether or not to look for the workspace bazelrc file at `$workspace/.bazelrc`

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Remote caching and execution options

<ParamField path="--[no]experimental_remote_repo_contents_cache" type="boolean" default="false">
  If enabled, the remote cache will be used to store the results of reproducible repository
  rules. If a repository rule needs to be evaluated and its result is already in the remote
  cache, the contents of the repository will be kept in an in-memory file system and are
  only downloaded when needed, either by Bazel itself or an action that runs locally.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--host_jvm_args" type="jvm_arg">
  Flags to pass to the JVM executing Blaze.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--host_jvm_debug" type="void">
  Convenience option to add some additional JVM startup flags, which cause the JVM to wait during startup until you connect from a JDWP-compliant debugger (like Eclipse) to port 5005.

  Expands to:
  - `--host_jvm_args=-agentlib:jdwp=transport=dt_socket,server=y,address=5005`
</ParamField>

<ParamField path="--server_javabase" type="jvm path">
  Path to the JVM used to execute Bazel itself.
</ParamField>


## Options Common to all Commands {#common_options}

Options that appear before the command and are parsed by the client

<ParamField path="--distdir" type="a path">
  Additional places to search for archives before accessing the network to download them.

  *May be used multiple times; values are accumulated.*

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]experimental_repository_cache_hardlinks" type="boolean" default="false">
  If set, the repository cache will hardlink the file in case of a cache hit, rather than copying. This is intended to save disk space.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--experimental_repository_downloader_retries" type="an integer" default="5">
  The maximum number of attempts to retry a download error. If set to 0, retries are disabled.

  Tags: [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_scale_timeouts" type="a double" default="1.0">
  Scale all timeouts in Starlark repository rules by this factor. In this way, external repositories can be made working on machines that are slower than the rule author expected, without changing the source code

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--http_connector_attempts" type="an integer" default="8">
  The maximum number of attempts for http downloads.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--http_connector_retry_max_timeout" type="An immutable length of time." default="0s">
  The maximum timeout for http download retries. With a value of 0, no timeout maximum is defined.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--http_max_parallel_downloads" type="an integer" default="8">
  The maximum number parallel http downloads.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--http_timeout_scaling" type="a double" default="1.0">
  Scale all timeouts related to http downloads by the given factor

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--repo_contents_cache" type="a path" default="see description">
  Specifies the location of the repo contents cache, which contains fetched repo
  directories shareable across workspaces. An empty string as argument requests the repo
  contents cache to be disabled, otherwise the default of `{--repository_cache}/contents`
  is used. Note that this means setting `--repository_cache=` would by default disable the
  repo contents cache as well, unless `--repo_contents_cache={some_path}` is also set.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--repo_contents_cache_gc_idle_delay" type="An immutable length of time." default="5m">
  Specifies the amount of time the server must remain idle before garbage collection happens
  to the repo contents cache.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--repo_contents_cache_gc_max_age" type="An immutable length of time." default="14d">
  Specifies the amount of time an entry in the repo contents cache can stay unused before
  it's garbage collected. If set to zero, only duplicate entries will be garbage collected.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--repository_cache" type="a path" default="see description">
  Specifies the cache location of the downloaded values obtained
  during the fetching of external repositories. An empty string
  as argument requests the cache to be disabled,
  otherwise the default of `{--output_user_root}/cache/repos/v1` is used.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]repository_disable_download" type="boolean" default="false">
  If set, downloading using `ctx.download{,_and_extract}` is not allowed during repository
  fetching. Note that network access is not completely disabled; ctx.execute could
  still run an arbitrary executable that accesses the Internet.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>


Options that control build execution

<ParamField path="--experimental_ui_max_stdouterr_bytes" type="an integer in (-1)-1073741819 range" default="1048576">
  The maximum size of the stdout / stderr files that will be printed to the console. -1 implies no limit.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--gc_churning_threshold" type="an integer in 0-100 range" default="100">
  At any point after an invocation has been running for at least one minute, if Blaze has spent at least this percentage of the invocation's wall time doing full GCs, Blaze will give up and fail with an OOM. A value of 100 effectively means to never give up for this reason.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--gc_churning_threshold_if_multiple_top_level_targets" type="an integer" default="-1">
  If set to a value in [0, 100] and this is a command that takes top-level targets (e.g. build but not query) and there are multiple such top-level targets, overrides --gc_churning_threshold. Useful to configure more aggressive OOMing behavior (i.e. a lower value than --gc_churning_threshold) when they are multiple top-level targets so that the invoker of Bazel can split and retry while still having less aggressive behavior when there is a single top-level target.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--gc_thrashing_threshold" type="an integer in 0-100 range" default="100">
  The percent of tenured space occupied (0-100) above which GcThrashingDetector considers memory pressure events against its limits (--gc_thrashing_limits). If set to 100, GcThrashingDetector is disabled.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--[no]incompatible_enable_proto_toolchain_resolution" type="boolean" default="true">
  If true, proto lang rules define toolchains from protobuf repository.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--bep_maximum_open_remote_upload_files" type="an integer" default="-1">
  Maximum number of open files allowed during BEP artifact upload.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_strict_repo_env" type="boolean" default="false">
  If true, repository rules and module extensions will only inherit `PATH`, `PATHEXT`
  (on Windows), and environment variables explicitly specified by `--repo_env`.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true,
  `--action_env=NAME=VALUE` will also be included.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_repo_env_ignores_action_env" type="boolean" default="true">
  If true, &lt;code&gt;--action_env=NAME=VALUE&lt;/code&gt; will no longer affect repository rule and module extension environments.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--remote_download_all" type="void">
  Downloads all remote outputs to the local machine. This flag is an alias for --remote_download_outputs=all.

  Expands to:
  - `--remote_download_outputs=all`

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_minimal" type="void">
  Does not download any remote build outputs to the local machine. This flag is an alias for --remote_download_outputs=minimal.

  Expands to:
  - `--remote_download_outputs=minimal`

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_outputs" type="all, minimal or toplevel" default="toplevel">
  If set to 'minimal' doesn't download any remote build outputs to the local machine, except the ones required by local actions. If set to 'toplevel' behaves like 'minimal' except that it also downloads outputs of top level targets to the local machine. Both options can significantly reduce build times if network bandwidth is a bottleneck.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_symlink_template" type="a string">
  Instead of downloading remote build outputs to the local machine, create symbolic links. The target of the symbolic links can be specified in the form of a template string. This template string may contain &lcub;hash&rcub; and &lcub;size_bytes&rcub; that expand to the hash of the object and the size in bytes, respectively. These symbolic links may, for example, point to a FUSE file system that loads objects from the CAS on demand.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_toplevel" type="void">
  Only downloads remote outputs of top level targets to the local machine. This flag is an alias for --remote_download_outputs=toplevel.

  Expands to:
  - `--remote_download_outputs=toplevel`

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--repo_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies additional environment variables to be available only for repository rules. Note that repository rules see the full environment anyway, but in this way variables can be set via command-line flags and &lt;code&gt;.bazelrc&lt;/code&gt; entries. The special syntax &lt;code&gt;=NAME&lt;/code&gt; can be used to explicitly unset a variable. The string &lt;code&gt;%bazel_workspace%&lt;/code&gt; in a value will be replaced with the absolute path of the workspace as printed by &lt;code&gt;bazel info workspace&lt;/code&gt;.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]allow_experimental_loads" type="boolean" default="false">
  If enabled, issue only a warning instead of an error for loads of experimental .bzls.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]check_bzl_visibility" type="boolean" default="true">
  If disabled, .bzl load visibility errors are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]incompatible_enforce_starlark_utf8" type="boolean" default="warning">
  If enabled (or set to 'error'), fail if Starlark files are not UTF-8 encoded. If set to 'warning', emit a warning instead. If set to 'off', Bazel assumes that Starlark files are UTF-8 encoded but does not verify this assumption. Note that Starlark files which are not UTF-8 encoded can cause Bazel to behave inconsistently.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]experimental_bzl_visibility" type="boolean" default="true">
  If enabled, adds a `visibility()` function that .bzl files may call during top-level evaluation to set their visibility for the purpose of load() statements.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_cc_shared_library" type="boolean" default="false">
  If set to true, rule attributes and Starlark API methods needed for the rule cc_shared_library will be available

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_disable_external_package" type="boolean" default="false">
  If set to true, the auto-generated //external package will not be available anymore. Bazel will still be unable to parse the file 'external/BUILD', but globs reaching into external/ from the unnamed package will work.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_dormant_deps" type="boolean" default="false">
  If set to true, attr.label(materializer=), attr(for_dependency_resolution=), attr.dormant_label(), attr.dormant_label_list() and rule(for_dependency_resolution=) are allowed.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_enable_android_migration_apis" type="boolean" default="false">
  If set to true, enables the APIs required to support the Android Starlark migration.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_enable_first_class_macros" type="boolean" default="true">
  If set to true, enables the `macro()` construct for defining symbolic macros.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_enable_scl_dialect" type="boolean" default="true">
  If set to true, .scl files may be used in load() statements.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_enable_starlark_set" type="boolean" default="true">
  If true, enable the set data type and set() constructor in Starlark.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_google_legacy_api" type="boolean" default="false">
  If set to true, exposes a number of experimental pieces of Starlark build API pertaining to Google legacy code.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_isolated_extension_usages" type="boolean" default="false">
  If true, enables the &lt;code&gt;isolate&lt;/code&gt; parameter in the &lt;a href="https://bazel.build/versions/9.2.0/rules/lib/globals/module#use_extension"&gt;&lt;code&gt;use_extension&lt;/code&gt;&lt;/a&gt; function.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]experimental_platforms_api" type="boolean" default="false">
  If set to true, enables a number of platform-related Starlark APIs useful for debugging.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_repo_remote_exec" type="boolean" default="false">
  If set to true, repository_rule gains some remote execution capabilities.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_repository_ctx_execute_wasm" type="boolean" default="false">
  If true enables the repository_ctx `load_wasm` and `execute_wasm` methods.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_sibling_repository_layout" type="boolean" default="false">
  If set to true, non-main repositories are planted as symlinks to the main repository in the execution root. That is, all repositories are direct children of the &#36;output_base/execution_root directory. This has the side effect of freeing up &#36;output_base/execution_root/**main**/external for the real top-level 'external' directory.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_single_package_toolchain_binding" type="boolean" default="false">
  If enabled, the register_toolchain function may not include target patterns which may refer to more than one package.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]experimental_starlark_type_checking" type="boolean" default="false">
  Enables type checking in files and functions that contain type annotations or related syntax. (When this flag is disabled, Bazel is more forgiving of invalid types in type annotations.)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_starlark_type_syntax" type="boolean" default="true">
  Enables type annotations and related syntax in .bzl files. Locations of files where these are allowed is further restricted by `--experimental_starlark_types_allowed_paths`.
  Type syntax is never permitted in .scl files regardless of this flag.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_starlark_types_allowed_paths" type="comma-separated list of options">
  List of canonical Label prefixes under which Starlark type annotations are allowed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]force_starlark_stack_trace" type="boolean" default="false">
  If --force_starlark_stack_trace=true, Starlark stace traces will always be printed from calls to fail(), including those normally supressed with fail(..., stack_trace = False)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_allow_tags_propagation" type="boolean" default="true">
  If set to true, tags will be propagated from a target to the actions' execution requirements; otherwise tags are not propagated. See https://github.com/bazelbuild/bazel/issues/8830 for details.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_always_check_depset_elements" type="boolean" default="true">
  Check the validity of elements added to depsets, in all constructors. Elements must be immutable, but historically the depset(direct=...) constructor forgot to check. Use tuples instead of lists in depset elements. See https://github.com/bazelbuild/bazel/issues/10313 for details.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_autoload_externally" type="comma-separated set of options">
  A comma-separated list of rules (or other symbols) that were previously part of Bazel and which are now to be retrieved from their respective external repositories. This flag is intended to be used to facilitate migration of rules out of Bazel. See also https://github.com/bazelbuild/bazel/issues/23043.
  A symbol that is autoloaded within a file behaves as if its built-into-Bazel definition were replaced by its canonical new definition in an external repository. For a BUILD file, this essentially means implicitly adding a load() statement. For a .bzl file, it's either a load() statement or a change to a field of the `native` object, depending on whether the autoloaded symbol is a rule.
  Bazel maintains a hardcoded list of all symbols that may be autoloaded; only those symbols may appear in this flag. For each symbol, Bazel knows the new definition location in an external repository, as well as a set of special-cased repositories that must not autoload it to avoid creating cycles.
  A list item of "+foo" in this flag causes symbol foo to be autoloaded, except in foo's exempt repositories, within which the Bazel-defined version of foo is still available.
  A list item of "foo" triggers autoloading as above, but the Bazel-defined version of foo is not made available to the excluded repositories. This ensures that foo's external repository does not depend on the old Bazel implementation of foo
  A list item of "-foo" does not trigger any autoloading, but makes the Bazel-defined version of foo inaccessible throughout the workspace. This is used to validate that the workspace is ready for foo's definition to be deleted from Bazel.
  If a symbol is not named in this flag then it continues to work as normal -- no autoloading is done, nor is the Bazel-defined version suppressed. For configuration see https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java As a shortcut also whole repository may be used, for example +@rules_python will autoload all Python rules.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_check_external_repo_source_dir_package_boundary" type="boolean" default="false">
  If true, a source directory in an external repository fails the build if it crosses a package boundary into a sub-package, matching the behavior that already applies to source directories in the main repository. If false, such package boundary crossings inside external repositories are not detected.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_autoloads_in_main_repo" type="boolean" default="true">
  Controls if the autoloads (set by --incompatible_autoload_externally) are enabled in themain repository. When enabled the rules (or other symbols) that were previously part of Bazel need to have load statements. Use buildifier to add them.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_objc_library_transition" type="boolean" default="true">
  Disable objc_library's custom transition and inherit from the top level target instead (No-op in Bazel)

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_starlark_host_transitions" type="boolean" default="false">
  If set to true, rule attributes cannot set 'cfg = "host"'. Rules should set 'cfg = "exec"' instead.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_target_default_provider_fields" type="boolean" default="false">
  If set to true, disable the ability to utilize the default provider via field syntax. Use provider-key syntax instead. For example, instead of using `ctx.attr.dep.files` to access `files`, utilize `ctx.attr.dep[DefaultInfo].files See https://github.com/bazelbuild/bazel/issues/9014 for details.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_transitions_on" type="comma-separated set of options">
  A comma-separated list of flags that cannot be used in transitions inputs or outputs.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_disallow_ctx_resolve_tools" type="boolean" default="true">
  If set to true, calling the deprecated ctx.resolve_tools API always fails. Uses of this API should be replaced by an executable or tools argument to ctx.actions.run or ctx.actions.run_shell.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disallow_empty_glob" type="boolean" default="true">
  If set to true, the default value of the `allow_empty` argument of glob() is False.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enable_deprecated_label_apis" type="boolean" default="true">
  If enabled, certain deprecated APIs (native.repository_name, Label.workspace_name, Label.relative) can be used.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_fail_on_unknown_attributes" type="boolean" default="true">
  If enabled, targets that have unknown attributes set to None fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_fix_package_group_reporoot_syntax" type="boolean" default="true">
  In package_group's `packages` attribute, changes the meaning of the value "//..." to refer to all packages in the current repository instead of all packages in any repository. You can use the special value "public" in place of "//..." to obtain the old behavior. This flag requires that --incompatible_package_group_has_public_syntax also be enabled.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_locations_prefers_executable" type="boolean" default="true">
  Whether a target that provides an executable expands to the executable rather than the files in &lt;code&gt;DefaultInfo.files&lt;/code&gt; under &#36;(locations ...) expansion if the number of files is not 1.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_no_attr_license" type="boolean" default="true">
  If set to true, disables the function `attr.license`.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_no_implicit_file_export" type="boolean" default="false">
  If set, (used) source files are package private unless exported explicitly. See https://github.com/bazelbuild/proposals/blob/master/designs/2019-10-24-file-visibility.md

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_no_implicit_watch_label" type="boolean" default="true">
  If true, then methods on &lt;code&gt;repository_ctx&lt;/code&gt; that are passed a Label will no longer automatically watch the file under that label for changes even if &lt;code&gt;watch = "no"&lt;/code&gt;, and &lt;code&gt;repository_ctx.path&lt;/code&gt; no longer causes the returned path to be watched. Use &lt;code&gt;repository_ctx.watch&lt;/code&gt; instead.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_no_rule_outputs_param" type="boolean" default="false">
  If set to true, disables the `outputs` parameter of the `rule()` Starlark function.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_package_group_has_public_syntax" type="boolean" default="true">
  In package_group's `packages` attribute, allows writing "public" or "private" to refer to all packages or no packages respectively.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_resolve_select_keys_eagerly" type="boolean" default="false">
  If enabled, string keys in dicts passed to select() in .bzl files are immediately resolved to Labels relative to the file instead of being interpreted relative to the BUILD file they are ultimately loaded from.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_run_shell_command_string" type="boolean" default="true">
  If set to true, the command parameter of actions.run_shell will only accept string

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_simplify_unconditional_selects_in_rule_attrs" type="boolean" default="true">
  If true, simplify configurable rule attributes which contain only unconditional selects; for example, if ["a"] + select("//conditions:default", ["b"]) is assigned to a rule attribute, it is stored as ["a", "b"]. This option does not affect attributes of symbolic macros or attribute default values.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_stop_exporting_build_file_path" type="boolean" default="false">
  If set to true, deprecated ctx.build_file_path will not be available. ctx.label.package + '/BUILD' can be used instead.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_stop_exporting_language_modules" type="boolean" default="false">
  If enabled, certain language-specific modules (such as `cc_common`) are unavailable in user .bzl files and may only be called from their respective rules repositories.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_unambiguous_label_stringification" type="boolean" default="true">
  When true, Bazel will stringify the label @//foo:bar to @//foo:bar, instead of //foo:bar. This only affects the behavior of str(), the % operator, and so on; the behavior of repr() is unchanged. See https://github.com/bazelbuild/bazel/issues/15916 for more information.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_use_cc_configure_from_rules_cc" type="boolean" default="false">
  When true, Bazel will no longer allow using cc_configure from @bazel_tools. Please see https://github.com/bazelbuild/bazel/issues/10134 for details and migration instructions.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--max_computation_steps" type="a long integer" default="0">
  The maximum number of Starlark computation steps that may be executed by a BUILD file (zero means no limit).

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--nested_set_depth_limit" type="an integer" default="3500">
  The maximum depth of the graph internal to a depset (also known as NestedSet), above which the depset() constructor will fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--repositories_without_autoloads" type="comma-separated set of options">
  A list of additional repositories (beyond the hardcoded ones Bazel knows about) where autoloads are not to be added. This should typically contain repositories that are transitively depended on by a repository that may be loaded automatically (and which can therefore potentially create a cycle).

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options relating to Bzlmod output and semantics

<ParamField path="--allow_yanked_versions" type="a string">
  Specified the module versions in the form of
  `{module1}@{version1},module2@{version2}` that will be allowed in the resolved
  dependency graph even if they are declared yanked in the registry where they come
  from (if they are not coming from a `NonRegistryOverride`).
  Otherwise, yanked versions will cause the resolution to fail. You can also define allowed
  yanked versions with the `BZLMOD_ALLOW_YANKED_VERSIONS` environment variable. You can
  disable this check by using the keyword `all` (not recommended).

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--check_bazel_compatibility" type="error, warning or off" default="error">
  Check bazel version compatibility of Bazel modules. Valid values are `error` to escalate it to a resolution failure, `off` to disable the check, or `warning` to print a warning when mismatch detected.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--check_direct_dependencies" type="off, warning or error" default="warning">
  Check if the direct `bazel_dep` dependencies declared in the root module are the same versions you get in the resolved dependency graph. Valid values are `off` to disable the check, `warning` to print a warning when mismatch detected or `error` to escalate it to a resolution failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]ignore_dev_dependency" type="boolean" default="false">
  If true, Bazel ignores `bazel_dep` and `use_extension` declared as `dev_dependency` in
  the `MODULE.bazel` of the root module. Note that, those dev dependencies are always
  ignored in the `MODULE.bazel` if it's not the root module regardless of the value
  of this flag.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--lockfile_mode" type="off, update, refresh or error" default="update">
  Specifies how and whether or not to use the lockfile. Valid values are `update` to use the lockfile and update it if there are changes, `refresh` to additionally refresh mutable information (yanked versions and previously missing modules) from remote registries from time to time, `error` to use the lockfile but throw an error if it's not up-to-date, or `off` to neither read from or write to the lockfile.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--module_mirrors" type="a '[name=]value1[,..,valueN]' assignment">
  Specifies URLs under which the source URLs of Bazel modules can be found, in addition
  to and taking precedence over any registry-provided mirror URLs. This flag can be
  specified per-registry using the syntax
  `--module_mirrors=<registry>=<mirror1>[,<mirror2>,...]` (e.g.,
  `--module_mirrors=https://bcr.bazel.build=https://mirror.example.com`). It can also
  be specified as a comma-separated list of mirror URLs that applies to all registries that
  don't have an explicit list (e.g., `--module_mirrors=https://mirror1,https://mirror2`).
  Set this to an empty value to disable the use of any mirrors not specified by the
  registries. Later uses of this flag override earlier ones with the same (or no) registry.
  The default set of mirrors may change over time, but all downloads from mirrors are
  verified by hashes stored in the registry (and thus pinned by the lockfile).

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--override_module" type="an equals-separated mapping of module name to path">
  Override a module with a local path in the form of `{module name}={path}`. If the given
  path is an absolute path, it will be used as it is. If the given path is a
  relative path, it is relative to the current working directory. If the given path
  starts with `%workspace%`, it is relative to the workspace root, which is the
  output of `bazel info workspace`. If the given path is empty, then remove any
  previous overrides.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--registry" type="a string">
  Specifies the registries to use to locate Bazel module dependencies. The order is important: modules will be looked up in earlier registries first, and only fall back to later registries when they're missing from the earlier ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--vendor_dir" type="a path" default="see description">
  Specifies the directory that should hold the external repositories in vendor mode, whether for the purpose of fetching them into it or using them while building. The path can be specified as either an absolute path or a path relative to the workspace directory.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--gc_thrashing_limits" type="comma separated pairs of &lt;period&gt;:&lt;count&gt;" default="1s:2,20s:3,1m:5">
  Limits which, if reached, cause GcThrashingDetector to crash Bazel with an OOM. Each limit is specified as &lt;period&gt;:&lt;count&gt; where period is a duration and count is a positive integer. If more than --gc_thrashing_threshold percent of tenured space (old gen heap) remains occupied after &lt;count&gt; consecutive full GCs within &lt;period&gt;, an OOM is triggered. Multiple limits can be specified separated by commas.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]heuristically_drop_nodes" type="boolean" default="false">
  If true, Blaze will remove FileState and DirectoryListingState nodes after related File and DirectoryListing node is done to save memory. We expect that it is less likely that these nodes will be needed again. If so, the program will re-evaluate them.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]incompatible_do_not_split_linking_cmdline" type="boolean" default="true">
  When true, Bazel no longer modifies command line flags used for linking, and also doesn't selectively decide which flags go to the param file and which don't.  See https://github.com/bazelbuild/bazel/issues/7670 for details.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]keep_state_after_build" type="boolean" default="true">
  If false, Blaze will discard the inmemory state from this build when the build finishes. Subsequent builds will not have any incrementality with respect to this one.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--skyframe_high_water_mark_full_gc_drops_per_invocation" type="an integer, &gt;= 0" default="10">
  Flag for advanced configuration of Bazel's internal Skyframe engine. If Bazel detects its retained heap percentage usage exceeds the threshold set by --skyframe_high_water_mark_threshold, when a full GC event occurs, it will drop unnecessary temporary Skyframe state, up to this many times per invocation. Defaults to 10. Zero means that full GC events will never trigger drops. If the limit is reached, Skyframe state will no longer be dropped when a full GC event occurs and that retained heap percentage threshold is exceeded.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--skyframe_high_water_mark_minor_gc_drops_per_invocation" type="an integer, &gt;= 0" default="10">
  Flag for advanced configuration of Bazel's internal Skyframe engine. If Bazel detects its retained heap percentage usage exceeds the threshold set by --skyframe_high_water_mark_threshold, when a minor GC event occurs, it will drop unnecessary temporary Skyframe state, up to this many times per invocation. Defaults to 10. Zero means that minor GC events will never trigger drops. If the limit is reached, Skyframe state will no longer be dropped when a minor GC event occurs and that retained heap percentage threshold is exceeded.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--skyframe_high_water_mark_threshold" type="an integer" default="85">
  Flag for advanced configuration of Bazel's internal Skyframe engine. If Bazel detects its retained heap percentage usage is at least this threshold, it will drop unnecessary temporary Skyframe state. Tweaking this may let you mitigate wall time impact of GC thrashing, when the GC thrashing is (i) caused by the memory usage of this temporary state and (ii) more costly than reconstituting the state when it is needed.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]track_incremental_state" type="boolean" default="true">
  If false, Blaze will not persist data that allows for invalidation and re-evaluation on incremental builds in order to save memory on this build. Subsequent builds will not have any incrementality with respect to this one. Usually you will want to specify --batch when setting this to false.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--[no]announce_rc" type="boolean" default="false">
  Whether to announce rc options.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]attempt_to_print_relative_paths" type="boolean" default="false">
  When printing the location part of messages, attempt to use a path relative to the workspace directory or one of the directories specified by --package_path.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--bes_backend" type="a string">
  Specifies the build event service (BES) backend endpoint in the form
  `[SCHEME://]HOST[:PORT]`. The default is to disable BES uploads. Supported schemes
  are `grpc` and `grpcs` (grpc with TLS enabled). If no scheme is provided, Bazel
  assumes `grpcs`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]bes_check_preceding_lifecycle_events" type="boolean" default="false">
  Sets the field `check_preceding_lifecycle_events_present` on
  `PublishBuildToolEventStreamRequest` which tells BES to check whether it previously
  received `InvocationAttemptStarted` and `BuildEnqueued` events matching the current
  tool event.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_header" type="a 'name=value' assignment">
  Specify a header in `NAME=VALUE` form that will be included in BES requests.
  Multiple headers can be passed by specifying the flag multiple times. Multiple
  values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_instance_name" type="a string" default="see description">
  Specifies the instance name under which the BES will persist uploaded BEP. Defaults to null.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_keywords" type="comma-separated list of options">
  Specifies a list of notification keywords to be added the default set of keywords
  published to BES (`command_name={command_name}`, `protocol_name=BEP`).
  Defaults to none.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]bes_lifecycle_events" type="boolean" default="true">
  Specifies whether to publish BES lifecycle events. (defaults to 'true').

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_oom_finish_upload_timeout" type="An immutable length of time." default="10m">
  Specifies how long bazel should wait for the BES/BEP upload to complete while OOMing. This flag ensures termination when the JVM is severely GC thrashing and cannot make progress on any user thread.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--bes_outerr_buffer_size" type="an integer" default="10240">
  Specifies the maximal size of stdout or stderr to be buffered in BEP, before it is
  reported as a progress event. Individual writes are still reported in a single
  event, even if larger than the specified value up to `--bes_outerr_chunk_size`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_outerr_chunk_size" type="an integer" default="1048576">
  Specifies the maximal size of stdout or stderr to be sent to BEP in a single message.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_proxy" type="a string" default="see description">
  Connect to the Build Event Service through a proxy. Currently this flag can only be
  used to configure a Unix domain socket (`unix:/path/to/socket`).
</ParamField>

<ParamField path="--bes_results_url" type="a string">
  Specifies the base URL where a user can view the information streamed to the BES backend. Bazel will output the URL appended by the invocation id to the terminal.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--bes_system_keywords" type="comma-separated list of options">
  Specifies a list of notification keywords to be included directly, without the
  `user_keyword=` prefix included for keywords supplied via `--bes_keywords`.
  Intended for Build service operators that set `--bes_lifecycle_events=false` and
  include keywords when calling `PublishLifecycleEvent`. Build service operators
  using this flag should prevent users from overriding the flag value.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_timeout" type="An immutable length of time." default="0s">
  Specifies how long bazel should wait for the BES/BEP upload to complete after the
  build and tests have finished. A valid timeout is a natural number followed by a
  unit: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). The
  default value is `0` which means that there is no timeout.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--bes_upload_mode" type="wait_for_upload_complete, nowait_for_upload_complete or fully_async" default="wait_for_upload_complete">
  Specifies whether the Build Event Service upload should block the build completion or
  should end the invocation immediately and finish the upload in the
  background.

  - `wait_for_upload_complete`: blocks at the end of the current invocation until
  all events (including lifecycle events if applicable) are uploaded and
  acknowledged by the backend.
  - `nowait_for_upload_complete`: blocks at the beginning of the next invocation
  until all events (including lifecycle events if applicable) are uploaded and
  acknowledged by the backend.
  - `fully_async`: blocks at the beginning of the next invocation until all events
  are uploaded but does not wait for acknowledgements. Events may be lost in case
  of (transient) failures and backends may report streams as incomplete in this
  mode. There is no guarantee that `FinishInvocationAttempt` or `FinishBuild`
  lifecycle events are sent.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--build_event_binary_file" type="a string">
  If non-empty, write a varint delimited binary representation of representation of the
  build event protocol to that file. This option implies
  `--bes_upload_mode=wait_for_upload_complete`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_event_binary_file_path_conversion" type="boolean" default="true">
  Convert paths in the binary file representation of the build event protocol to more
  globally valid URIs whenever possible; if disabled, the `file://` uri scheme will
  always be used

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--build_event_binary_file_upload_mode" type="wait_for_upload_complete, nowait_for_upload_complete or fully_async" default="wait_for_upload_complete">
  Specifies whether the Build Event Service upload for `--build_event_binary_file` should
  block the build completion or should end the invocation immediately and finish
  the upload in the background. Either `wait_for_upload_complete` (default),
  `nowait_for_upload_complete`, or `fully_async`.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--build_event_json_file" type="a string">
  If non-empty, write a JSON serialisation of the build event protocol to that file.
  This option implies `--bes_upload_mode=wait_for_upload_complete`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_event_json_file_path_conversion" type="boolean" default="true">
  Convert paths in the json file representation of the build event protocol to more
  globally valid URIs whenever possible; if disabled, the `file://` uri scheme will
  always be used

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--build_event_json_file_upload_mode" type="wait_for_upload_complete, nowait_for_upload_complete or fully_async" default="wait_for_upload_complete">
  Specifies whether the Build Event Service upload for `--build_event_json_file` should
  block the build completion or should end the invocation immediately and finish
  the upload in the background. Either `wait_for_upload_complete` (default),
  `nowait_for_upload_complete`, or `fully_async`.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--build_event_max_named_set_of_file_entries" type="an integer" default="5000">
  The maximum number of entries for a single `named_set_of_files` event; values smaller
  than 2 are ignored and no event splitting is performed. This is intended for
  limiting the maximum event size in the build event protocol, although it does not
  directly control event size. The total event size is a function of the structure
  of the set as well as the file and uri lengths, which may in turn depend on the
  hash function.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_event_publish_all_actions" type="boolean" default="false">
  Whether all actions should be published.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--build_event_text_file" type="a string">
  If non-empty, write a textual representation of the build event protocol to that file

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_event_text_file_path_conversion" type="boolean" default="true">
  Convert paths in the text file representation of the build event protocol to more
  globally valid URIs whenever possible; if disabled, the `file://` uri scheme will
  always be used

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--build_event_text_file_upload_mode" type="wait_for_upload_complete, nowait_for_upload_complete or fully_async" default="wait_for_upload_complete">
  Specifies whether the Build Event Service upload for `--build_event_text_file` should
  block the build completion or should end the invocation immediately and finish
  the upload in the background. Either `wait_for_upload_complete` (default),
  `nowait_for_upload_complete`, or `fully_async`.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--build_event_upload_max_retries" type="an integer" default="4">
  The maximum number of times Bazel should retry uploading a build event.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]experimental_bep_target_summary" type="boolean" default="false">
  Whether to publish `TargetSummary` events.
</ParamField>

<ParamField path="--[no]experimental_build_event_expand_filesets" type="boolean" default="false">
  If true, expand Filesets in the BEP when presenting output files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--experimental_build_event_output_group_mode" type="an output group name followed by an OutputGroupFileMode, e.g. default=both">
  Specify how an output group's files will be represented in `TargetComplete`/`AspectComplete`
  BEP events. Values are an assignment of an output group name to one of
  `NAMED_SET_OF_FILES_ONLY`, `INLINE_ONLY`, or `BOTH`. The default value is
  `NAMED_SET_OF_FILES_ONLY`. If an output group is repeated, the final value to
  appear is used. The default value sets the mode for coverage artifacts to BOTH:
  `--experimental_build_event_output_group_mode=baseline.lcov=both`

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--experimental_build_event_upload_retry_minimum_delay" type="An immutable length of time." default="1s">
  Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--experimental_build_event_upload_strategy" type="a string" default="see description">
  Selects how to upload artifacts referenced in the build event protocol. In Bazel
  the valid options include `local` and `remote`. The default value is `local`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_collect_load_average_in_profiler" type="boolean" default="true">
  If enabled, the profiler collects the system's overall load average.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_collect_pressure_stall_indicators" type="boolean" default="false">
  If enabled, the profiler collects the Linux PSI data.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_collect_resource_estimation" type="boolean" default="false">
  If enabled, the profiler collects CPU and memory usage estimation for local actions.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_collect_skyframe_counts_in_profiler" type="boolean" default="false">
  If enabled, the profiler collects SkyFunction counts in the Skyframe graph over time for key function types, like configured targets and action executions. May have a performance hit as this visits the ENTIRE Skyframe graph at every profiling time unit. Do not use this flag with performance-critical measurements.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_collect_system_network_usage" type="boolean" default="true">
  If enabled, the profiler collects the system's network usage.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_collect_worker_data_in_profiler" type="boolean" default="true">
  If enabled, the profiler collects worker's aggregated resource data.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--experimental_command_profile" type="cpu, wall, alloc or lock" default="see description">
  Records a Java Flight Recorder profile for the duration of the command. One of the supported profiling event types (cpu, wall, alloc or lock) must be given as an argument. The profile is written to a file named after the event type under the output base directory. The syntax and semantics of this flag might change in the future to support additional profile types or output formats; use at your own risk.
</ParamField>

<ParamField path="--experimental_profile_additional_tasks" type="phase, action, discover_inputs, action_check, action_lock, action_update, action_complete, action_rewinding, bzlmod, info, create_package, remote_execution, local_execution, scanner, local_parse, upload_time, remote_process_time, remote_queue, remote_setup, fetch, local_process_time, vfs_stat, vfs_dir, vfs_readlink, vfs_md5, vfs_xattr, vfs_delete, vfs_open, vfs_read, vfs_write, vfs_glob, vfs_vmfs_stat, vfs_vmfs_dir, vfs_vmfs_read, wait, thread_name, thread_sort_index, skyframe_eval, skyfunction, critical_path, critical_path_component, handle_gc_notification, local_action_counts, starlark_parser, starlark_user_fn, starlark_builtin_fn, starlark_user_compiled_fn, starlark_repository_fn, starlark_thread_context, action_fs_staging, remote_cache_check, remote_download, remote_network, filesystem_traversal, worker_execution, worker_setup, worker_borrow, worker_working, worker_copying_outputs, credential_helper, conflict_check, dynamic_lock, repository_fetch, repository_vendor, repo_cache_gc_wait, spawn_log, rpc, skycache, wasm_load, wasm_exec or unknown">
  Specifies additional profile tasks to be included in the profile.

  *May be used multiple times; values are accumulated.*

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_profile_include_primary_output" type="boolean" default="false">
  Includes the extra "out" attribute in action events that contains the exec path to the action's primary output.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_profile_include_target_configuration" type="boolean" default="false">
  Includes target configuration hash in action events' JSON profile data.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_profile_include_target_label" type="boolean" default="false">
  Includes target label in action events' JSON profile data.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_record_metrics_for_all_mnemonics" type="boolean" default="false">
  Controls the output of BEP ActionSummary and BuildGraphMetrics, limiting the number of mnemonics in ActionData and number of entries reported in BuildGraphMetrics.AspectCount/RuleClassCount. By default the number of types is limited to the top 20, by number of executed actions for ActionData, and instances for RuleClass and Asepcts. Setting this option will write statistics for all mnemonics, rule classes and aspects.
</ParamField>

<ParamField path="--[no]experimental_record_skyframe_metrics" type="boolean" default="false">
  Controls the output of BEP BuildGraphMetrics, including expensiveto compute skyframe metrics about Skykeys, RuleClasses and Aspects.With this flag set to false BuildGraphMetrics.rule_count and aspectfields will not be populated in the BEP.
</ParamField>

<ParamField path="--[no]experimental_run_bep_event_include_residue" type="boolean" default="false">
  Whether to include the command-line residue in run build events which could contain the residue. By default, the residue is not included in run command build events that could contain the residue.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_stream_log_file_uploads" type="boolean" default="false">
  Stream log file uploads directly to the remote storage rather than writing them to disk.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--experimental_workspace_rules_log_file" type="a path" default="see description">
  Log certain Workspace Rules events into this file as delimited WorkspaceEvent protos.
</ParamField>

<ParamField path="--[no]generate_json_trace_profile" type="boolean" default="auto">
  If enabled, Bazel profiles the build and writes a JSON-format profile into a file in the output base. View profile by loading into chrome://tracing. By default Bazel writes the profile for all build-like commands and query.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]heap_dump_on_oom" type="boolean" default="false">
  Whether to manually output a heap dump if an OOM is thrown (including manual OOMs due to reaching --gc_thrashing_limits). The dump will be written to &lt;output_base&gt;/&lt;invocation_id&gt;.heapdump.hprof. This option effectively replaces -XX:+HeapDumpOnOutOfMemoryError, which has no effect for manual OOMs.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--jvm_heap_histogram_internal_object_pattern" type="a valid Java regular expression" default="jdk\.internal\.vm\.Filler.+">
  Regex for overriding the matching logic for JDK21+ JVM heap memory collection. We are relying on volatile internal G1 GC implemenation details to get a clean memory metric, this option allows us to adapt to changes in that internal implementation without having to wait for a binary release.  Passed to JDK Matcher.find()
</ParamField>

<ParamField path="--[no]legacy_important_outputs" type="boolean" default="false">
  Use this to suppress generation of the legacy `important_outputs` field in the
  `TargetComplete` event. `important_outputs` are required for Bazel to ResultStore/BTX
  integration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--logging" type="0 &lt;= an integer &lt;= 6" default="3">
  The logging level.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--memory_profile" type="a path" default="see description">
  If set, write memory usage data to the specified file at phase ends and stable heap to master log at end of build.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--memory_profile_stable_heap_parameters" type="integers, separated by a comma expected in pairs" default="1,0">
  Tune memory profile's computation of stable heap at end of build. Should be and even number of  integers separated by commas. In each pair the first integer is the number of GCs to perform. The second integer in each pair is the number of seconds to wait between GCs. Ex: 2,4,4,0 would 2 GCs with a 4sec pause, followed by 4 GCs with zero second pause

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--profile" type="a path" default="see description">
  If set, profile Bazel and write data to the specified file. See https://bazel.build/advanced/performance/json-trace-profile for more information.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--profiles_to_retain" type="an integer" default="5">
  Number of profiles to retain in the output base. If there are more than this number of profiles in the output base, the oldest are deleted until the total is under the limit.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]record_full_profiler_data" type="boolean" default="false">
  By default, Bazel profiler will record only aggregated data for fast but numerous events (such as statting the file). If this option is enabled, profiler will record each event - resulting in more precise profiling data but LARGE performance hit. Option only has effect if --profile used as well.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]redirect_local_instrumentation_output_writes" type="boolean" default="false">
  If true and supported, instrumentation output is redirected to be written locally on a different machine than where bazel is running on.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--remote_print_execution_messages" type="failure, success or all" default="failure">
  Choose when to print remote execution messages. Valid values are `failure`, to print only on failures, `success` to print only on successes and `all` to print always.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]slim_profile" type="boolean" default="true">
  Slims down the size of the JSON profile by merging events if the profile gets too large.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--starlark_cpu_profile" type="a string">
  Writes into the specified file a pprof profile of CPU usage by all Starlark threads.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--tool_tag" type="a string">
  A tool name to attribute this Bazel invocation to.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--ui_event_filters" type="Convert list of comma separated event kind to list of filters">
  Specifies which events to show in the UI. It is possible to add or remove events to the default ones using leading +/-, or override the default set completely with direct assignment. The set of supported event kinds include INFO, DEBUG, ERROR and more.

  *May be used multiple times; values are accumulated.*

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]write_command_log" type="boolean" default="false">
  Whether or not to write the command.log file

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>


Remote caching and execution options

<ParamField path="--downloader_config" type="a path" default="see description">
  Specify a file to configure the remote downloader with. This file consists of lines, each of which starts with a directive (`allow`, `block` or `rewrite`) followed by either a host name (for `allow` and `block`) or two patterns, one to match against, and one to use as a substitute URL, with back-references starting from `$1`. It is possible for multiple `rewrite` directives for the same URL to be given, and in this case multiple URLs will be returned.
</ParamField>

<ParamField path="--experimental_circuit_breaker_strategy" type="failure" default="see description">
  Specifies the strategy for the circuit breaker to use. Available strategies are "failure". On invalid value for the option the behavior same as the option is not set.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_remote_cache_chunking" type="boolean" default="false">
  If enabled, large blobs are split into content-defined chunks using FastCDC 2020 and uploaded/downloaded in chunks, enabling deduplication across blobs. The server must advertise SplitBlob/SpliceBlob RPCs and FastCDC 2020 parameters in its capabilities.

  Tags: [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_remote_cache_compression_threshold" type="an integer" default="100">
  The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote_cache_compression is set.
</ParamField>

<ParamField path="--[no]experimental_remote_cache_lease_extension" type="boolean" default="false">
  If set to true, Bazel will extend the lease for outputs of remote actions during the build by sending `FindMissingBlobs` calls periodically to remote cache. The frequency is based on the value of `--experimental_remote_cache_ttl`.
</ParamField>

<ParamField path="--experimental_remote_cache_ttl" type="An immutable length of time." default="3h">
  The guaranteed minimal TTL of blobs in the remote cache after their digests are recently referenced e.g. by an ActionResult or FindMissingBlobs. Bazel does several optimizations based on the blobs' TTL e.g. doesn't repeatedly call GetActionResult in an incremental build. The value should be set slightly less than the real TTL since there is a gap between when the server returns the digests and when Bazel receives them.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_remote_capture_corrupted_outputs" type="a path" default="see description">
  A path to a directory where the corrupted outputs will be captured to.
</ParamField>

<ParamField path="--[no]experimental_remote_discard_merkle_trees" type="boolean" default="true">
  If set to true, discard in-memory copies of the input root's Merkle tree and associated input mappings during calls to GetActionResult() and Execute(). This reduces memory usage significantly, but does require Bazel to recompute them upon remote cache misses and retries.
</ParamField>

<ParamField path="--experimental_remote_downloader" type="a string" default="see description">
  A Remote Asset API endpoint URI, to be used as a remote download proxy. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. See: https://github.com/bazelbuild/remote-apis/blob/master/build/bazel/remote/asset/v1/remote_asset.proto
</ParamField>

<ParamField path="--[no]experimental_remote_downloader_local_fallback" type="boolean" default="false">
  Whether to fall back to the local downloader if remote downloader fails.
</ParamField>

<ParamField path="--[no]experimental_remote_downloader_propagate_credentials" type="boolean" default="false">
  Whether to propagate credentials from netrc and credential helper to the remote downloader server. The server implementation needs to support the new `http_header_url:<url-index>:<header-key>` qualifier where the `<url-index>` is a 0-based position of the URL inside the FetchBlobRequest's `uris` field. The URL-specific headers should take precedence over the global headers.
</ParamField>

<ParamField path="--experimental_remote_failure_rate_threshold" type="an integer in 0-100 range" default="10">
  Sets the allowed number of failure rate in percentage for a specific time window after which it stops calling to the remote cache/executor. By default the value is 10. Setting this to 0 means no limitation.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_remote_failure_window_interval" type="An immutable length of time." default="60s">
  The interval in which the failure rate of the remote requests are computed. On zero or negative value the failure duration is computed the whole duration of the execution.Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_remote_mark_tool_inputs" type="boolean" default="false">
  If set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.
</ParamField>

<ParamField path="--experimental_remote_output_service" type="a string" default="see description">
  HOST or HOST:PORT of a remote output service endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.
</ParamField>

<ParamField path="--experimental_remote_output_service_output_path_prefix" type="a string">
  The path under which the contents of output directories managed by the --experimental_remote_output_service are placed. The actual output directory used by a build will be a descendant of this path and determined by the output service.
</ParamField>

<ParamField path="--[no]experimental_remote_require_cached" type="boolean" default="false">
  If set to true, enforce that all actions that can run remotely are cached, or else fail the build. This is useful to troubleshoot non-determinism issues as it allows checking whether actions that should be cached are actually cached without spuriously injecting new results into the cache.
</ParamField>

<ParamField path="--experimental_remote_scrubbing_config" type="Converts to a Scrubber" default="see description">
  Enables remote cache key scrubbing with the supplied configuration file, which must be a protocol buffer in text format (see src/main/protobuf/remote_scrubbing.proto).
  This feature is intended to facilitate sharing a remote/disk cache between actions executing on different platforms but targeting the same platform. It should be used with extreme care, as improper settings may cause accidental sharing of cache entries and result in incorrect builds.
  Scrubbing does not affect how an action is executed, only how its remote/disk cache key is computed for the purpose of retrieving or storing an action result. Scrubbed actions are incompatible with remote execution, and will always be executed locally instead.
  Modifying the scrubbing configuration does not invalidate outputs present in the local filesystem or internal caches; a clean build is required to reexecute affected actions.
  In order to successfully use this feature, you likely want to set a custom --host_platform together with --experimental_platform_in_output_dir (to normalize output prefixes).
</ParamField>

<ParamField path="--[no]guard_against_concurrent_changes" type="boolean" default="lite">
  Set this to 'full' to enable checking the ctime of all input files of an action before uploading it to a remote cache. There may be cases where the Linux kernel delays writing of files, which could cause false positives. The default is 'lite', which only checks source files in the main repository. Setting this to 'off' disables all checks. This is not recommended, as the cache may be polluted when a source file is changed while an action that takes it as an input is executing.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]incompatible_remote_local_fallback_for_remote_cache" type="boolean" default="false">
  Whether --remote_local_fallback applies to --remote_cache.
</ParamField>

<ParamField path="--[no]remote_accept_cached" type="boolean" default="true">
  Whether to accept remotely cached action results.
</ParamField>

<ParamField path="--remote_build_event_upload" type="all or minimal" default="minimal">
  If set to 'all', all local outputs referenced by BEP are uploaded to remote cache.
  If set to 'minimal', local outputs referenced by BEP are not uploaded to the remote cache, except for files that are important to the consumers of BEP (e.g. test logs and timing profile). bytestream:// scheme is always used for the uri of files even if they are missing from remote cache.
  Default to 'minimal'.
</ParamField>

<ParamField path="--remote_bytestream_uri_prefix" type="a string" default="see description">
  The hostname and instance name to be used in bytestream:// URIs that are written into build event streams. This option can be set when builds are performed using a proxy, which causes the values of --remote_executor and --remote_instance_name to no longer correspond to the canonical name of the remote execution service. When not set, it will default to "&#36;&lcub;hostname&rcub;/&#36;&lcub;instance_name&rcub;".
</ParamField>

<ParamField path="--remote_cache" type="a string" default="see description">
  A URI of a caching endpoint. The supported schemas are http, https, grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc://, http:// or unix: schema to disable TLS. See https://bazel.build/remote/caching
</ParamField>

<ParamField path="--[no]remote_cache_async" type="boolean" default="true">
  If true, uploading of action results to a disk or remote cache will happen in the background instead of blocking the completion of an action. Some actions are incompatible with background uploads, and may still block even when this flag is set.
</ParamField>

<ParamField path="--[no]remote_cache_compression" type="boolean" default="false">
  If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental_remote_cache_compression_threshold.
</ParamField>

<ParamField path="--remote_cache_header" type="a 'name=value' assignment">
  Specify a header that will be included in cache requests: --remote_cache_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_default_exec_properties" type="a 'name=value' assignment">
  Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec_properties.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_regex" type="a valid Java regular expression">
  Force remote build outputs whose path matches this pattern to be downloaded, irrespective of --remote_download_outputs. Multiple patterns may be specified by repeating this flag.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_downloader_header" type="a 'name=value' assignment">
  Specify a header that will be included in remote downloader requests: --remote_downloader_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_exec_header" type="a 'name=value' assignment">
  Specify a header that will be included in execution requests: --remote_exec_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_execution_priority" type="an integer" default="0">
  The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.
</ParamField>

<ParamField path="--remote_executor" type="a string" default="see description">
  HOST or HOST:PORT of a remote execution endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.
</ParamField>

<ParamField path="--remote_grpc_log" type="a path" default="see description">
  If specified, a path to a file to log gRPC call related details. This log consists of a sequence of serialized com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.LogEntry protobufs with each message prefixed by a varint denoting the size of the following serialized protobuf message, as performed by the method LogEntry.writeDelimitedTo(OutputStream).
</ParamField>

<ParamField path="--remote_header" type="a 'name=value' assignment">
  Specify a header that will be included in requests: --remote_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_instance_name" type="a string">
  Value to pass as instance_name in the remote execution API.
</ParamField>

<ParamField path="--[no]remote_local_fallback" type="boolean" default="false">
  Whether to fall back to standalone local execution strategy if remote execution fails.
</ParamField>

<ParamField path="--remote_local_fallback_strategy" type="a string" default="local">
  Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.
</ParamField>

<ParamField path="--remote_max_concurrency_per_connection" type="an integer" default="100">
  Limit the max number of concurrent requests per gRPC connection. By default the value is 100.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--remote_max_connections" type="an integer" default="100">
  Limit the max number of concurrent connections to remote cache/executor. By default the value is 100. Setting this to 0 means no limitation.
  For HTTP remote cache, one TCP connection could handle one request at one time, so Bazel could make up to --remote_max_connections concurrent requests.
  For gRPC remote cache/executor, one gRPC channel could usually handle 100+ concurrent requests (controlled by --remote_max_concurrency_per_connection), so Bazel could make around `--remote_max_connections * 100` concurrent requests.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--remote_proxy" type="a string" default="see description">
  Connect to the remote cache through a proxy. Currently this flag can only be used to configure a Unix domain socket (unix:/path/to/socket).
</ParamField>

<ParamField path="--remote_result_cache_priority" type="an integer" default="0">
  The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.
</ParamField>

<ParamField path="--remote_retries" type="an integer" default="5">
  The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.
</ParamField>

<ParamField path="--remote_retry_max_delay" type="An immutable length of time." default="5s">
  The maximum backoff delay between remote retry attempts. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
</ParamField>

<ParamField path="--remote_timeout" type="An immutable length of time." default="60s">
  The maximum amount of time to wait for remote execution and cache calls. For the REST cache, this is both the connect and the read timeout. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
</ParamField>

<ParamField path="--[no]remote_upload_local_results" type="boolean" default="true">
  Whether to upload locally executed action results to the remote cache if the remote cache supports it and the user is authorized to do so.
</ParamField>

<ParamField path="--[no]remote_verify_downloads" type="boolean" default="true">
  If set to true, Bazel will compute the hash sum of all remote downloads and  discard the remotely cached values if they don't match the expected value.
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--build_metadata" type="a 'name=value' assignment">
  Custom key-value string pairs to supply in a build event.

  *May be used multiple times; values are accumulated.*

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--color" type="yes, no or auto" default="auto">
  Use terminal controls to colorize output.
</ParamField>

<ParamField path="--config" type="a string">
  Selects additional config sections from the rc files; for every &lt;command&gt;, it also pulls in the options from &lt;command&gt;:&lt;config&gt; if such a section exists; if this section doesn't exist in any .rc file, Blaze fails with an error. The config sections and flag combinations they are equivalent to are located in the tools/*.blazerc config files.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--credential_helper" type="Path to a credential helper. It may be absolute, relative to the PATH environment variable, or %workspace%-relative. The path be optionally prefixed by a scope  followed by an '='. The scope is a domain name, optionally with a single leading '*' wildcard component. A helper applies to URIs matching its scope, with more specific scopes preferred. If a helper has no scope, it applies to every URI.">
  Configures a credential helper conforming to the [Credential Helper Specification](https://github.com/EngFlow/credential-helper-spec)
  to use for retrieving authorization credentials for repository
  fetching, remote caching and execution, and the build event service.
  Credentials supplied by a helper take precedence over credentials supplied by
  `--google_default_credentials`, `--google_credentials`, a `.netrc` file, or the
  auth parameter to `repository_ctx.download()` and
  `repository_ctx.download_and_extract()`.
  May be specified multiple times to set up multiple helpers.
  See [Configuring Bazel's Credential Helper - Engflow Blog](https://blog.engflow.com/2023/10/09/configuring-bazels-credential-helper/) for instructions.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--credential_helper_cache_duration" type="An immutable length of time." default="30m">
  How long to cache credentials for if the credential helper doesn't return an expiration time. Changing the value of this flag clears the cache.
</ParamField>

<ParamField path="--credential_helper_timeout" type="An immutable length of time." default="10s">
  Configures the timeout for a credential helper.
  Credential helpers failing to respond within this timeout will fail the invocation.
</ParamField>

<ParamField path="--curses" type="yes, no or auto" default="auto">
  Use terminal cursor controls to minimize scrolling output.
</ParamField>

<ParamField path="--disk_cache" type="a path" default="see description">
  A path to a directory where Bazel can read and write actions and action outputs. If the directory does not exist, it will be created.
</ParamField>

<ParamField path="--[no]enable_platform_specific_config" type="boolean" default="false">
  If true, Bazel picks up host-OS-specific config lines from bazelrc files. For example, if the host OS is Linux and you run bazel build, Bazel picks up lines starting with build:linux. Supported OS identifiers are linux, macos, windows, freebsd, and openbsd. Enabling this flag is equivalent to using --config=linux on Linux, --config=windows on Windows, etc.
</ParamField>

<ParamField path="--experimental_action_cache_gc_idle_delay" type="An immutable length of time." default="5m">
  How long the server must remain idle before a garbage collection of the action cache is attempted. Ineffectual unless --experimental_action_cache_gc_max_age is nonzero.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_action_cache_gc_max_age" type="An immutable length of time." default="0">
  If set to a nonzero value, the action cache will be periodically garbage collected to remove entries older than this age. Garbage collection occurs in the background once the server has become idle, as determined by the --experimental_action_cache_gc_idle_delay and --experimental_action_cache_gc_threshold flags.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_action_cache_gc_threshold" type="an integer in 0-100 range" default="10">
  The percentage of stale action cache entries required for garbage collection to be triggered. Ineffectual unless --experimental_action_cache_gc_max_age is nonzero.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_disk_cache_gc_idle_delay" type="An immutable length of time." default="5m">
  How long the server must remain idle before a garbage collection of the disk cache occurs. To specify the garbage collection policy, set --experimental_disk_cache_gc_max_size and/or --experimental_disk_cache_gc_max_age.
</ParamField>

<ParamField path="--experimental_disk_cache_gc_max_age" type="An immutable length of time." default="0">
  If set to a positive value, the disk cache will be periodically garbage collected to remove entries older than this age. If set in conjunction with --experimental_disk_cache_gc_max_size, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental_disk_cache_gc_idle_delay flag.
</ParamField>

<ParamField path="--experimental_disk_cache_gc_max_size" type="a size in bytes, optionally followed by a K, M, G or T multiplier" default="0">
  If set to a positive value, the disk cache will be periodically garbage collected to stay under this size. If set in conjunction with --experimental_disk_cache_gc_max_age, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental_disk_cache_gc_idle_delay flag.
</ParamField>

<ParamField path="--[no]experimental_enable_thread_dump" type="boolean" default="false">
  Whether to enable thread dumps. If true, Bazel will dump the state of all threads (including virtual threads) to a file every --experimental_thread_dump_interval, or after action execution being inactive for --experimental_thread_dump_action_execution_inactivity_duration. The dumps will be written to the &lt;output_base&gt;/server/thread_dumps/ directory.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--experimental_install_base_gc_max_age" type="An immutable length of time." default="30d">
  How long an install base must go unused before it's eligible for garbage collection. If nonzero, the server will attempt to garbage collect other install bases when idle.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_rule_extension_api" type="boolean" default="true">
  Enable experimental rule extension API and subrule APIs

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_thread_dump_action_execution_inactivity_duration" type="An immutable length of time." default="0">
  Dump the threads when action execution being inactive for this duration. If zero, no thread dumps are written for action execution being inactive.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--experimental_thread_dump_interval" type="An immutable length of time." default="0">
  How often to dump the threads periodically. If zero, no thread dumps are written periodically.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]experimental_windows_watchfs" type="boolean" default="false">
  If true, experimental Windows support for --watchfs is enabled. Otherwise --watchfsis a non-op on Windows. Make sure to also enable --watchfs.
</ParamField>

<ParamField path="--google_auth_scopes" type="comma-separated list of options" default="https://www.googleapis.com/auth/cloud-platform">
  A comma-separated list of Google Cloud authentication scopes.
</ParamField>

<ParamField path="--google_credentials" type="a string" default="see description">
  Specifies the file to get authentication credentials from. See https://cloud.google.com/docs/authentication for details.
</ParamField>

<ParamField path="--[no]google_default_credentials" type="boolean" default="false">
  Whether to use 'Google Application Default Credentials' for authentication.
  See [Authentication methods at Google - Google Cloud](https://cloud.google.com/docs/authentication) for details.
  Disabled by default.
</ParamField>

<ParamField path="--grpc_keepalive_time" type="An immutable length of time." default="60s">
  Configures keep-alive pings for outgoing gRPC connections. If this is set, then Bazel
  sends pings after this much time of no read operations on the connection, but
  only if there is at least one pending gRPC call. The value 0 disables the keep-alives.
</ParamField>

<ParamField path="--grpc_keepalive_timeout" type="An immutable length of time." default="20s">
  Configures a keep-alive timeout for outgoing gRPC connections. If keep-alive pings are
  enabled with `--grpc_keepalive_time`, then Bazel times out a connection if it does
  not receive a ping reply after this much time. Times are treated as second
  granularity; it is an error to set a value less than one second. If keep-alive
  pings are disabled, then this setting is ignored.
</ParamField>

<ParamField path="--[no]grpc_tcp_keepalive" type="boolean" default="true">
  Whether to enable TCP keep-alive (the SO_KEEPALIVE socket option) for outgoing gRPC
  connections. This operates at the transport layer and is independent of the
  application-level keep-alive pings configured with `--grpc_keepalive_time`. When enabled,
  the keep-alive behavior is controlled by `--grpc_tcp_keepalive_time`,
  `--grpc_tcp_keepalive_interval` and `--grpc_tcp_keepalive_count`.
</ParamField>

<ParamField path="--grpc_tcp_keepalive_count" type="an integer" default="3">
  When `--grpc_tcp_keepalive` is enabled, the number of unacknowledged TCP keep-alive probes
  to send before considering the connection dead (TCP_KEEPCNT). Has no effect if TCP
  keep-alive is disabled.
</ParamField>

<ParamField path="--grpc_tcp_keepalive_interval" type="An immutable length of time." default="10s">
  When `--grpc_tcp_keepalive` is enabled, the amount of time between successive TCP
  keep-alive probes (TCP_KEEPINTVL). Has no effect if TCP keep-alive is disabled.
</ParamField>

<ParamField path="--grpc_tcp_keepalive_time" type="An immutable length of time." default="60s">
  When `--grpc_tcp_keepalive` is enabled, the amount of idle time on a gRPC connection
  before the first TCP keep-alive probe is sent (TCP_KEEPIDLE). Has no effect if TCP
  keep-alive is disabled.
</ParamField>

<ParamField path="--[no]incompatible_disable_non_executable_java_binary" type="boolean" default="false">
  If true, java_binary is always executable. create_executable attribute is removed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--inject_repository" type="an equals-separated mapping of repository name to path">
  Adds a new repository with a local path in the form of `{repository name}={path}`. This
  only takes effect with `--enable_bzlmod` and is equivalent to adding a
  corresponding `local_repository` to the root module's `MODULE.bazel` file via
  `use_repo_rule`. If the given path is an absolute path, it will be used as it is.
  If the given path is a relative path, it is relative to the current working
  directory. If the given path starts with `%workspace%`, it is relative to the
  workspace root, which is the output of `bazel info workspace`. If the given path
  is empty, then remove any previous injections.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--invocation_id" type="a UUID">
  Unique identifier, in UUID format, for the command being run. If explicitly specified uniqueness must be ensured by the caller. The UUID is printed to stderr, the BEP and remote execution protocol.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--override_repository" type="an equals-separated mapping of repository name to path">
  Override a repository with a local path in the form of `{repository name}={path}`,
  where the repository name can be either a canonical name or an apparent name from the
  point of view of the main repository.
  Note that if this is flag is used to override a module's repository, changes to the
  MODULE.bazel file will not be effective if the module is obtained from a registry. Use
  `--override_module` instead to for that purpose.
  If the given path is an absolute path, it will be used as it is. If the given path is a
  relative path, it is relative to the current working directory. If the given path starts
  with `%workspace%`, it is relative to the workspace root, which is the output of `bazel info workspace`. If the given path is empty, then remove any previous overrides.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]progress_in_terminal_title" type="boolean" default="false">
  Show the command progress in the terminal title. Useful to see what bazel is doing when having multiple terminal tabs.
</ParamField>

<ParamField path="--[no]show_progress" type="boolean" default="true">
  Display progress messages during a build.
</ParamField>

<ParamField path="--show_progress_rate_limit" type="a double" default="0.2">
  Minimum number of seconds between progress messages in the output.
</ParamField>

<ParamField path="--[no]show_timestamps" type="boolean" default="false">
  Include timestamps in messages
</ParamField>

<ParamField path="--tls_certificate" type="a string" default="see description">
  Specify a path to a TLS certificate that is trusted to sign server certificates.
</ParamField>

<ParamField path="--tls_client_certificate" type="a string" default="see description">
  Specify the TLS client certificate to use; you also need to provide a client key to enable client authentication.
</ParamField>

<ParamField path="--tls_client_key" type="a string" default="see description">
  Specify the TLS client key to use; you also need to provide a client certificate to enable client authentication.
</ParamField>

<ParamField path="--ui_actions_shown" type="an integer" default="8">
  Number of concurrent actions shown in the detailed progress bar; each action is shown on a separate line. The progress bar always shows at least one one, all numbers less than 1 are mapped to 1.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]watchfs" type="boolean" default="false">
  On Linux/macOS: If true, bazel tries to use the operating system's file watch service for local changes instead of scanning every file for a change. On Windows: this flag currently is a non-op but can be enabled in conjunction with --experimental_windows_watchfs. On any OS: The behavior is undefined if your workspace is on a network file system, and files are edited on a remote machine.
</ParamField>


## Aquery Options {#aquery}

Inherits all options from [build](#build).

Options relating to query output and semantics

<ParamField path="--aspect_deps" type="off, conservative or precise" default="conservative">
  How to resolve aspect dependencies when the output format is one of &lcub;xml,proto,record&rcub;. 'off' means no aspect dependencies are resolved, 'conservative' (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, 'precise' means that only those aspects are added that are possibly active given the rule class of the direct dependencies. Note that precise mode requires loading other packages to evaluate a single target thus making it slower than the other modes. Also note that even precise mode is not completely precise: the decision whether to compute an aspect is decided in the analysis phase, which is not run during 'bazel query'.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]consistent_labels" type="boolean" default="false">
  If enabled, every query command emits labels as if by the Starlark &lt;code&gt;str&lt;/code&gt; function applied to a &lt;code&gt;Label&lt;/code&gt; instance. This is useful for tools that need to match the output of different query commands and/or labels emitted by rules. If not enabled, output formatters are free to emit apparent repository names (relative to the main repository) instead to make the output more readable.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_explicit_aspects" type="boolean" default="false">
  aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]graph:factored" type="boolean" default="true">
  If true, then the graph will be emitted 'factored', i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--graph:node_limit" type="an integer" default="512">
  The maximum length of the label string for a graph node in the output.  Longer labels will be truncated; -1 means no truncation.  This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]implicit_deps" type="boolean" default="true">
  If enabled, implicit dependencies will be included in the dependency graph over which the query operates. An implicit dependency is one that is not explicitly specified in the BUILD file but added by bazel. For cquery, this option controls filtering resolved toolchains.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]include_artifacts" type="boolean" default="true">
  Includes names of the action inputs and outputs in the output (potentially large).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_aspects" type="boolean" default="true">
  aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_commandline" type="boolean" default="true">
  Includes the content of the action command lines in the output (potentially large).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_file_write_contents" type="boolean" default="false">
  Include the file contents for the FileWrite, SourceSymlinkManifest, and RepoMappingManifest actions (potentially large).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_param_files" type="boolean" default="false">
  Include the content of the param files used in the command (potentially large). Note: Enabling this flag will automatically enable the --include_commandline flag.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_pruned_inputs" type="boolean" default="true">
  Includes action inputs that were pruned during action execution. Only affects actions that discover inputs and have been executed in a previous invocation. Only takes effect if --include_artifacts is also set.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]incompatible_package_group_includes_double_slash" type="boolean" default="true">
  If enabled, when outputting package_group's `packages` attribute, the leading `//` will not be omitted.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]infer_universe_scope" type="boolean" default="false">
  If set and --universe_scope is unset, then a value of --universe_scope will be inferred as the list of unique target patterns in the query expression. Note that the --universe_scope value inferred for a query expression that uses universe-scoped functions (e.g.`allrdeps`) may not be what you want, so you should use this option only if you know what you are doing. See https://bazel.build/reference/query#sky-query for details and examples. If --universe_scope is set, then this option's value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]line_terminator_null" type="boolean" default="false">
  Whether each format is terminated with \0 instead of newline.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]nodep_deps" type="boolean" default="true">
  If enabled, deps from "nodep" attributes will be included in the dependency graph over which the query operates. A common example of a "nodep" attribute is "visibility". Run and parse the output of `info build-language` to learn about all the "nodep" attributes in the build language.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--output" type="a string" default="text">
  The format in which the aquery results should be printed. Allowed values for aquery are: text, textproto, proto, streamed_proto, jsonproto.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--output_file" type="a string">
  When specified, query results will be written directly to this file, and nothing will be printed to Bazel's standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &gt; file&lt;/code&gt;.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:default_values" type="boolean" default="true">
  If true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to --output=proto

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:definition_stack" type="boolean" default="false">
  Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule's class was defined.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:flatten_selects" type="boolean" default="true">
  If enabled, configurable attributes created by select() are flattened. For list types the flattened representation is a list containing each value of the select map exactly once. Scalar types are flattened to null.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]proto:include_attribute_source_aspects" type="boolean" default="false">
  Populate the source_aspect_name proto field of each Attribute with the source aspect that the attribute came from (empty string if it did not).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:include_starlark_rule_env" type="boolean" default="true">
  Use the starlark environment in the value of the generated &#36;internal_attr_hash attribute. This ensures that the starlark rule definition (and its transitive imports) are part of this identifier.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:include_synthetic_attribute_hash" type="boolean" default="false">
  Whether or not to calculate and populate the &#36;internal_attr_hash attribute.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:instantiation_stack" type="boolean" default="false">
  Populate the instantiation call stack of each rule. Note that this requires the stack to be present

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:locations" type="boolean" default="true">
  Whether to output location information in proto output at all.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--proto:output_rule_attrs" type="comma-separated list of options" default="all">
  Comma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to --output=proto.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:rule_classes" type="boolean" default="false">
  Populate the rule_class_key field of each rule; and for the first rule with a given rule_class_key, also populate its rule_class_info proto field. The rule_class_key field uniquely identifies a rule class, and the rule_class_info field is a Stardoc-format rule class API definition.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:rule_inputs_and_outputs" type="boolean" default="true">
  Whether or not to populate the rule_input and rule_output fields.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--query_file" type="a string">
  If set, query will read the query from the file named here, rather than on the command line. It is an error to specify a file here as well as a command-line query.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]relative_locations" type="boolean" default="false">
  If true, the location of BUILD files in xml and proto outputs will be relative. By default, the location output is an absolute path and will not be consistent across machines. You can set this option to true to have a consistent result across machines.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]skyframe_state" type="boolean" default="false">
  Without performing extra analysis, dump the current Action Graph from Skyframe. Note: Specifying a target with --skyframe_state is currently not supported. This flag is only available with --output=proto or --output=textproto.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]tool_deps" type="boolean" default="true">
  Query: If disabled, dependencies on 'exec configuration' will not be included in the dependency graph over which the query operates. An 'exec configuration' dependency edge, such as the one from any 'proto_library' rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same 'target' program.
  Cquery: If disabled, filters out all configured targets which cross an execution transition from the top-level target that discovered this configured target. That means if the top-level target is in the target configuration, only configured targets also in the target configuration will be returned. If the top-level target is in the exec configuration, only exec configured targets will be returned. This option will NOT exclude resolved toolchains.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--universe_scope" type="comma-separated list of options">
  A comma-separated set of target patterns (additive and subtractive). The query may be performed in the universe defined by the transitive closure of the specified targets. This option is used for the query and cquery commands.
  For cquery, the input to this option is the targets all answers are built under and so this option may affect configurations and transitions. If this option is not specified, the top-level targets are assumed to be the targets parsed from the query expression. Note: For cquery, not specifying this option may cause the build to break if targets parsed from the query expression are not buildable with top-level options.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control build execution

<ParamField path="--[no]experimental_persistent_aar_extractor" type="boolean" default="false">
  Enable persistent aar extractor by using workers.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_split_coverage_postprocessing" type="boolean" default="false">
  If true, then Bazel will run coverage postprocessing for test in a new spawn.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--persistent_android_dex_desugar" type="void">
  Enable persistent Android dex and desugar actions by using workers.

  Expands to:
  - `--internal_persistent_android_dex_desugar`
  - `--strategy=Desugar=worker`
  - `--strategy=DexBuilder=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_android_resource_processor" type="void">
  Enable persistent Android resource processor by using workers.

  Expands to:
  - `--internal_persistent_busybox_tools`
  - `--strategy=AaptPackage=worker`
  - `--strategy=AndroidResourceParser=worker`
  - `--strategy=AndroidResourceValidator=worker`
  - `--strategy=AndroidResourceCompiler=worker`
  - `--strategy=RClassGenerator=worker`
  - `--strategy=AndroidResourceLink=worker`
  - `--strategy=AndroidAapt2=worker`
  - `--strategy=AndroidAssetMerger=worker`
  - `--strategy=AndroidResourceMerger=worker`
  - `--strategy=AndroidCompiledResourceMerger=worker`
  - `--strategy=ManifestMerger=worker`
  - `--strategy=AndroidManifestMerger=worker`
  - `--strategy=Aapt2Optimize=worker`
  - `--strategy=AARGenerator=worker`
  - `--strategy=ProcessDatabinding=worker`
  - `--strategy=GenerateDataBindingBaseClasses=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_dex_desugar" type="void">
  Enable persistent multiplexed Android dex and desugar actions by using workers.

  Expands to:
  - `--persistent_android_dex_desugar`
  - `--internal_persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_resource_processor" type="void">
  Enable persistent multiplexed Android resource processor by using workers.

  Expands to:
  - `--persistent_android_resource_processor`
  - `--modify_execution_info=AaptPackage=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers`
  - `--modify_execution_info=RClassGenerator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAapt2=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=ManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers`
  - `--modify_execution_info=AARGenerator=+supports-multiplex-workers`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_tools" type="void">
  Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

  Expands to:
  - `--internal_persistent_multiplex_busybox_tools`
  - `--persistent_multiplex_android_resource_processor`
  - `--persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--android_compiler" type="a string" default="see description">
  The Android target compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_manifest_merger" type="legacy, android or force_android" default="android">
  Selects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_platforms" type="a build target label">
  Sets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--cc_output_directory_tag" type="a string">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compiler" type="a string" default="see description">
  The C++ compiler to use for compiling the target.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--coverage_output_generator" type="a build target label" default="@bazel_tools//tools/test:lcov_merger">
  Location of the binary that is used to postprocess raw coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:lcov_merger`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_report_generator" type="a build target label" default="@bazel_tools//tools/test:coverage_report_generator">
  Location of the binary that is used to generate coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:coverage_report_generator`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_support" type="a build target label" default="@bazel_tools//tools/test:coverage_support">
  Location of support files that are required on the inputs of every test action
  that collects code coverage. Defaults to `//tools/test:coverage_support`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--custom_malloc" type="a build target label" default="see description">
  Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_include_xcode_execution_requirements" type="boolean" default="false">
  If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action.  If the Xcode version has a hyphenated label,  also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_prefer_mutual_xcode" type="boolean" default="true">
  If true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--extra_execution_platforms" type="comma-separated list of options">
  The platforms that are available as execution platforms to run actions.
  Platforms can be specified by exact target, or as a target pattern.
  These platforms will be considered before those declared in the `WORKSPACE` file by
  `register_execution_platforms()`. This option may only be set once; later
  instances will override earlier flag settings.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--extra_toolchains" type="comma-separated list of options">
  The toolchain rules to be considered during toolchain resolution.
  Toolchains can be specified by exact target, or as a target pattern.
  These toolchains will be considered before those declared in the `WORKSPACE` file
  by `register_toolchains()`.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--grte_top" type="a label" default="see description">
  A label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_compiler" type="a string" default="see description">
  No-op flag. Will be removed in a future release.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--host_grte_top" type="a label" default="see description">
  If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_platform" type="a build target label" default="@bazel_tools//tools:host_platform">
  The label of a platform rule that describes the host system.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_builtin_objc_strip_action" type="boolean" default="true">
  Whether to emit a strip action as part of objc linking.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_dont_enable_host_nonhost_crosstool_features" type="boolean" default="true">
  If true, Bazel will not enable 'host' and 'nonhost' features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enable_apple_toolchain_resolution" type="boolean" default="false">
  Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_remove_legacy_whole_archive" type="boolean" default="true">
  If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strip_executable_safely" type="boolean" default="false">
  If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]interface_shared_objects" type="boolean" default="true">
  Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--macos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--minimum_os_version" type="a string" default="see description">
  The minimum OS version which your compilation targets.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_mappings" type="a main workspace-relative path">
  The location of a mapping file that describes which platform to use if none is set or
  which flags to set when a platform already exists. Must be relative to the main
  workspace root. Defaults to `platform_mappings` (a file directly under the
  workspace root).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--platforms" type="a build target label">
  The labels of the platform rules describing the target platforms for the current command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_path" type="a string" default="see description">
  The absolute path of the Python interpreter invoked to run Python targets on the
  target platform. Deprecated; disabled by `--incompatible_use_python_toolchains`.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]use_platforms_in_apple_crosstool_transition" type="boolean" default="false">
  Makes apple_crosstool_transition fall back to using the value of `--platforms` flag instead of legacy `--cpu` when needed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version" type="a string" default="see description">
  If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version_config" type="a build target label" default="@bazel_tools//tools/cpp:host_xcodes">
  The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]apple_generate_dsym" type="boolean" default="false">
  Whether to generate debug symbol(.dSYM) file(s).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_test_dwp" type="boolean" default="false">
  If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cc_proto_library_header_suffixes" type="comma-separated set of options" default=".pb.h">
  Sets the suffixes of header files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--cc_proto_library_source_suffixes" type="comma-separated set of options" default=".pb.cc">
  Sets the suffixes of source files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]experimental_proto_descriptor_sets_include_source_info" type="boolean" default="false">
  Run extra actions for alternative Java api versions in a proto_library.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_save_feature_state" type="boolean" default="false">
  Save the state of enabled and requested feautres as an output of compilation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fission" type="a set of compilation modes" default="no">
  Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes'  to enable all modes and 'no' to disable all modes.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]objc_generate_linkmap" type="boolean" default="false">
  Specifies whether to generate a linkmap file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]save_temps" type="boolean" default="false">
  If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]android_databinding_use_androidx" type="boolean" default="true">
  Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]android_databinding_use_v3_4_args" type="boolean" default="true">
  Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--android_dynamic_mode" type="off, default or fully" default="off">
  Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--android_manifest_merger_order" type="alphabetical, alphabetical_by_configuration or dependency" default="alphabetical">
  Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library's manifest coming before the manifests of its dependencies.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--catalyst_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple Catalyst binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--conlyopt" type="a string">
  Additional option to pass to gcc when compiling C source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--copt" type="a string">
  Additional options to pass to gcc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_absolute_path" type="a string" default="see description">
  Use CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_instrument" type="a string" default="see description">
  Generate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_profile" type="a build target label" default="see description">
  The cs_fdo_profile representing the context sensitive profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cxxopt" type="a string">
  Additional option to pass to gcc when compiling C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--dynamic_mode" type="off, default or fully" default="default">
  Determines whether C++ binaries will be linked dynamically.  'default' means Bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_propeller_optimize_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for propeller optimize will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_remaining_fdo_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for FDO will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_compress_java_resources" type="boolean" default="false">
  Compress Java resources in APKs

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_databinding_v2" type="boolean" default="true">
  Use android databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_rewrite_dexes_with_rex" type="boolean" default="false">
  use rex tool to rewrite dex files

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_objc_fastbuild_options" type="comma-separated list of options" default="-O0,-DDEBUG=1">
  Uses these strings as objc fastbuild compiler options.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]experimental_omitfp" type="boolean" default="false">
  If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_py_binaries_include_label" type="boolean" default="false">
  py_binary targets include their label even when stamping is disabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_llvm_covmap" type="boolean" default="false">
  If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fdo_instrument" type="a string" default="see description">
  Generate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_optimize" type="a string" default="see description">
  Use FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g. `//foo/bar:file.afdo` - you may need to add an `exports_files` directive to the corresponding package) and labels pointing to `fdo_profile` targets. This flag will be superseded by the `fdo_profile` rule.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_prefetch_hints" type="a build target label" default="see description">
  Use cache prefetch hints.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_profile" type="a build target label" default="see description">
  The fdo_profile representing the profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]force_pic" type="boolean" default="false">
  If enabled, all C++ compilations produce position-independent code ("-fPIC"), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables ("-pie").

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_conlyopt" type="a string">
  Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_copt" type="a string">
  Additional options to pass to the C compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cxxopt" type="a string">
  Additional options to pass to C++ compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_linkopt" type="a string">
  Additional option to pass to linker when linking tools in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for host targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--host_per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--ios_multi_cpus" type="comma-separated list of options">
  Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]legacy_whole_archive" type="boolean" default="true" deprecated>
  Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)
</ParamField>

<ParamField path="--linkopt" type="a string">
  Additional option to pass to gcc when linking.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltobackendopt" type="a string">
  Additional option to pass to the LTO backend step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltoindexopt" type="a string">
  Additional option to pass to the LTO indexing step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--macos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple macOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--memprof_profile" type="a build target label" default="see description">
  Use memprof profile.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]objc_debug_with_GLIBCXX" type="boolean" default="false">
  If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]objc_enable_binary_stripping" type="boolean" default="false">
  Whether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and --compilation_mode=opt are specified.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--objccopt" type="a string">
  Additional options to pass to gcc when compiling Objective-C/C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--per_file_ltobackendopt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to LTO backend (under --features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--propeller_optimize" type="a build target label" default="see description">
  Use Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile.  This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize(    name = "propeller_profile",    cc_profile = "propeller_cc_profile.txt",    ld_profile = "propeller_ld_profile.txt",)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: --propeller_optimize=//a/b:propeller_profile

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_cc_profile" type="a string" default="see description">
  Absolute path name of cc_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_ld_profile" type="a string" default="see description">
  Absolute path name of ld_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]share_native_deps" type="boolean" default="true">
  If true, native libraries that contain identical functionality will be shared among different targets

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--strip" type="always, sometimes or never" default="sometimes">
  Specifies whether to strip binaries and shared libraries  (using "-Wl,--strip-debug").  The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--stripopt" type="a string">
  Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple tvOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--tvos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--visionos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple visionOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple watchOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xbinary_fdo" type="a build target label" default="see description">
  Use XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with --fdo_instrument/--fdo_optimize/--fdo_profile, those options will always prevail as if xbinary_fdo is never specified.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]desugar_for_android" type="boolean" default="true">
  Whether to desugar Java 8 bytecode before dexing.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]desugar_java8_libs" type="boolean" default="false">
  Whether to include supported Java 8 libraries in apps for legacy devices.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_check_desugar_deps" type="boolean" default="true">
  Whether to double-check correct desugaring at Android binary level.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_one_version_enforcement" type="off, warning or error" default="OFF">
  When enabled, enforce that a java_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_strict_java_deps" type="off, warn, error, strict or default" default="default">
  If true, checks that a Java target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_android_rules" type="boolean" default="false">
  If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_apple_binary_rule" type="boolean" default="false">
  No-op. Kept here for backwards compatibility.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]one_version_enforcement_on_java_tests" type="boolean" default="true">
  When enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_native_rules_allowlist" type="a build target label" default="see description">
  An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--strict_proto_deps" type="off, warn, error, strict or default" default="error">
  Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--strict_public_imports" type="off, warn, error, strict or default" default="off">
  Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_system_includes" type="boolean" default="false">
  If true, headers found through system include paths (-isystem) are also required to be declared.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Options that affect the signing outputs of a build

<ParamField path="--apk_signing_method" type="v1, v2, v1_v2 or v4" default="v1_v2">
  Implementation to use to sign APKs

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]device_debug_entitlements" type="boolean" default="true">
  If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--ios_signing_cert_name" type="a string" default="see description">
  Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_disallow_sdk_frameworks_attributes" type="boolean" default="false">
  If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_objc_alwayslink_by_default" type="boolean" default="false">
  If true, make the default value true for alwayslink attributes in objc_library and objc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_python_disallow_native_rules" type="boolean" default="false">
  When true, an error occurs when using the builtin py_* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]break_build_on_parallel_dex2oat_failure" type="boolean" default="false">
  If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--default_test_resources" type="a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100">
  Override the default resources amount for tests. The expected format is
  `{resource}={value}`. If a single positive number is specified as `{value}`
  it will override the default resources for all test sizes. If 4
  comma-separated numbers are specified, they will override the resource
  amount for respectively the `small`, `medium`, `large`, `enormous` test sizes.
  Values can also be `HOST_RAM`/`HOST_CPU`, optionally followed
  by `[-|*]{float}` (eg. `memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4`).
  The default test resources specified by this flag are overridden by explicit
  resources specified in tags.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]experimental_android_use_parallel_dex2oat" type="boolean" default="false">
  Use dex2oat in parallel to possibly speed up android_test.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]ios_memleaks" type="boolean" default="false">
  Enable checking for memory leaks in ios_test targets.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--ios_simulator_device" type="a string" default="see description">
  The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--ios_simulator_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--runs_per_test" type="a positive integer or test_regex@runs. This flag may be passed more than once">
  Specifies number of times to run each test. If any of those attempts fail for any
  reason, the whole test is considered failed. Normally the value specified is
  just an integer.
  Example: `--runs_per_test=3` will run all tests 3 times.
  Alternate syntax: `regex_filter@runs_per_test`. Where `runs_per_test` stands for
  an integer value and `regex_filter` stands for a list of include and exclude
  regular expression patterns (Also see --instrumentation_filter).
  Example: `--runs_per_test=//foo/.*,-//foo/bar/.*@3` runs all tests in `//foo/` except
  those under `//foo/bar` three times. This option can be passed multiple times. The most
  recently passed argument that matches takes precedence. If nothing matches,
  the test is only run once.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies additional environment variables to be injected into the test runner
  environment. Variables can be either specified by `name`, in which
  case its value will be read from the Bazel client environment, or by the
  `name=value` pair.
  Previously set variables can be unset via `=name`.
  This option can be used multiple times to specify several variables.
  Used only by the 'bazel test' command.

  *May be used multiple times; values are accumulated.*

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--test_timeout" type="a single integer or comma-separated list of 4 integers" default="-1">
  Override the default test timeout values for test timeouts (in secs). If a single
  positive integer value is specified it will override all categories.  If 4
  comma-separated integers are specified, they will override the timeouts for
  `short`, `moderate`, `long` and `eternal` (in that order). In either form, a value of
  -1 tells blaze to use its default timeouts for that category.
</ParamField>

<ParamField path="--[no]zip_undeclared_test_outputs" type="boolean" default="false">
  If true, undeclared test outputs will be archived in a zip file.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--[no]cc_dotd_files" type="boolean" default="true">
  Whether to generate and analyze .d files.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]cc_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_filter_library_jar_with_program_jar" type="boolean" default="false">
  Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_dotd_files" type="boolean" default="true">
  If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_jdeps_files" type="boolean" default="true">
  If enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_retain_test_configuration_across_testonly" type="boolean" default="true">
  When enabled, `--trim_test_configuration` will not trim the test configuration for rules
  marked testonly=1. This is meant to reduce action conflict issues when non-test
  rules depend on `cc_test` rules. No effect if `--trim_test_configuration` is
  false.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_unsupported_and_brittle_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incremental_dexing" type="boolean" default="true">
  Does most of the work for dexing separately for each Jar file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]objc_use_dotd_pruning" type="boolean" default="true">
  If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]process_headers_in_dependencies" type="boolean" default="false">
  When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]trim_test_configuration" type="boolean" default="true">
  When enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--toolchain_resolution_debug" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-.*">
  Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be  separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_default_to_explicit_init_py" type="boolean" default="false">
  This flag changes the default behavior so that **init**.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--[no]cache_test_results" type="boolean" default="auto">
  Short form: `-t`

  If set to `auto`, Bazel reruns a test if and only if:

  - Bazel detects changes in the test or its dependencies,
  - The test is marked as `external`,
  - Multiple test runs were requested with `--runs_per_test`, or
  - The test previously failed.
  If set to `yes`, Bazel caches all test results except for tests marked as
  `external`. If set to `no`, Bazel does not cache any test results.
</ParamField>

<ParamField path="--[no]experimental_cancel_concurrent_tests" type="boolean" default="never">
  If `on_failed` or `on_passed`, then Blaze will cancel concurrently running tests on the first
  successful run with that result. This is only useful in combination with
  `--runs_per_test_detects_flakes`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_fetch_all_coverage_outputs" type="boolean" default="false">
  If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_generate_llvm_lcov" type="boolean" default="false">
  If true, coverage for clang will generate an LCOV report.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_java_classpath" type="off, javabuilder, bazel or bazel_no_fallback" default="bazel">
  Enables reduced classpaths for Java compilations.
</ParamField>

<ParamField path="--[no]experimental_run_android_lint_on_java_rules" type="boolean" default="false">
  Whether to validate java_* sources.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]explicit_java_test_deps" type="boolean" default="false">
  Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner's deps. Only works for bazel right now.
</ParamField>

<ParamField path="--host_java_launcher" type="a build target label" default="see description">
  The Java launcher used by tools that are executed during a build.
</ParamField>

<ParamField path="--host_javacopt" type="a string">
  Additional options to pass to javac when building tools that are executed during a build.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--host_jvmopt" type="a string">
  Additional options to pass to the Java VM when building tools that are executed during  the build. These options will get added to the VM startup options of each  java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]incompatible_check_sharding_support" type="boolean" default="true">
  If true, Bazel will fail a sharded test if the test runner does not indicate that it
  supports sharding by touching the file at the path in `TEST_SHARD_STATUS_FILE`.
  If false, a test runner that does not support sharding will lead to all tests
  running in each shard.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_exclusive_test_sandboxed" type="boolean" default="true">
  If true, exclusive tests will run with sandboxed strategy. Add `local` tag to force
  an exclusive test run locally

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strict_action_env" type="boolean" default="true">
  If true, Bazel uses an environment with a static value for PATH and does not
  inherit `LD_LIBRARY_PATH`. Use `--action_env=ENV_VARIABLE` if you want to
  inherit specific environment variables from the client, but note that doing so
  can prevent cross-user caching if a shared cache is used.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--j2objc_translation_flags" type="comma-separated list of options">
  Additional options to pass to the J2ObjC tool.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--java_debug" type="void">
  Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.

  Expands to:
  - `--test_arg=--wrapper_script_flag=--debug`
  - `--test_output=streamed`
  - `--test_strategy=exclusive`
  - `--test_timeout=9999`
  - `--nocache_test_results`
</ParamField>

<ParamField path="--[no]java_deps" type="boolean" default="true">
  Generate dependency information (for now, compile-time classpath) per Java target.
</ParamField>

<ParamField path="--[no]java_header_compilation" type="boolean" default="true">
  Compile ijars directly from source.
</ParamField>

<ParamField path="--java_language_version" type="a string">
  The Java language version
</ParamField>

<ParamField path="--java_launcher" type="a build target label" default="see description">
  The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.
</ParamField>

<ParamField path="--java_runtime_version" type="a string" default="local_jdk">
  The Java runtime version
</ParamField>

<ParamField path="--javacopt" type="a string">
  Additional options to pass to javac.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--jvmopt" type="a string">
  Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--legacy_main_dex_list_generator" type="a build target label" default="see description">
  Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</ParamField>

<ParamField path="--optimizing_dexer" type="a build target label" default="see description">
  Specifies a binary to use to do dexing without sharding.
</ParamField>

<ParamField path="--plugin" type="a build target label">
  Plugins to use in the build. Currently works with java_plugin.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--proguard_top" type="a build target label" default="see description">
  Specifies which version of ProGuard to use for code removal when building a Java binary.
</ParamField>

<ParamField path="--proto_compiler" type="a build target label" default="@bazel_tools//tools/proto:protoc">
  The label of the proto-compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]proto_profile" type="boolean" default="true">
  Whether to pass profile_path to the proto compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_profile_path" type="a build target label" default="see description">
  The profile to pass to the proto compiler as profile_path. If unset, but  --proto_profile is true (the default), infers the path from --fdo_optimize.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_cc" type="a build target label" default="@bazel_tools//tools/proto:cc_toolchain">
  Label of proto_lang_toolchain() which describes how to compile C++ protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_j2objc" type="a build target label" default="@bazel_tools//tools/j2objc:j2objc_proto_toolchain">
  Label of proto_lang_toolchain() which describes how to compile j2objc protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_java" type="a build target label" default="@bazel_tools//tools/proto:java_toolchain">
  Label of proto_lang_toolchain() which describes how to compile Java protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_javalite" type="a build target label" default="@bazel_tools//tools/proto:javalite_toolchain">
  Label of proto_lang_toolchain() which describes how to compile JavaLite protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--protocopt" type="a string">
  Additional options to pass to the protobuf compiler.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]runs_per_test_detects_flakes" type="boolean" default="false">
  If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</ParamField>

<ParamField path="--shell_executable" type="a path" default="see description">
  Absolute path to the shell executable for Bazel to use. If this is unset, but the
  `BAZEL_SH` environment variable is set on the first Bazel invocation (that starts
  up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
  default path depending on the operating system it runs on;

  - Windows: `c:/msys64/usr/bin/bash.exe`
  - FreeBSD: `/usr/local/bin/bash`
  - All others: `/bin/bash`.

  Note that using a shell that is not compatible with `bash` may lead
  to build failures or runtime failures of the generated binaries.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--test_arg" type="a string">
  Specifies additional options and arguments that should be passed to the test
  executable. Can be used multiple times to specify several arguments.
  If multiple tests are executed, each of them will receive identical arguments.
  Used only by the `bazel test` command.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_filter" type="a string" default="see description">
  Specifies a filter to forward to the test framework.  Used to limit the tests run. Note that this does not affect which targets are built.
</ParamField>

<ParamField path="--test_result_expiration" type="an integer" default="-1">
  This option is deprecated and has no effect.
</ParamField>

<ParamField path="--[no]test_runner_fail_fast" type="boolean" default="false">
  Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</ParamField>

<ParamField path="--test_sharding_strategy" type="explicit, disabled or forced=k where k is the number of shards to enforce" default="explicit">
  Specify strategy for test sharding:

  - `explicit` to only use sharding if the `shard_count` `BUILD` attribute is
  present.
  - `disabled` to never use test sharding.
  - `forced=k` to enforce `k` shards for testing regardless of the `shard_count` `BUILD`
  attribute.
</ParamField>

<ParamField path="--tool_java_language_version" type="a string">
  The Java language version used to execute the tools that are needed during a build
</ParamField>

<ParamField path="--tool_java_runtime_version" type="a string" default="remotejdk_11">
  The Java runtime version used to execute tools during the build
</ParamField>

<ParamField path="--[no]use_ijars" type="boolean" default="true">
  If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</ParamField>


## Build Options {#build}

Options that control build execution

<ParamField path="--[no]allow_one_action_on_resource_unavailable" type="boolean" default="true">
  If set, allow at least one action to run even if the resource is not enough or unavailable.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--allowed_strategies_by_exec_platform" type="a '&lt;Label&gt;=value[,value]' assignment">
  Filters spawn strategies by the execution platform without affecting order.
  For example:

  ```
  common --spawn_strategy=remote,sandboxed,worker,local
  common --strategy=Genrule=local
  common --allowed_strategies_by_exec_platform=@platforms//host:host=local,sandboxed,worker
  common --allowed_strategies_by_exec_platform=//:linux_amd64=remote
  ```

  With the above options;

  - Actions configured for the host platform will be given `remote,sandboxed,worker`.
  - Actions configured for the `//:linux_amd64` platform will be given `remote`.
  - Actions configured for the `//:linux_amd64` platform with mnemonic `Genrule` will be
  given no strategies and fail to spawn.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]check_up_to_date" type="boolean" default="false">
  Don't perform the build, just check if it is up-to-date.  If all targets are up-to-date, the build completes successfully.  If any step needs to be executed an error is reported and the build fails.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--dynamic_local_execution_delay" type="an integer" default="1000">
  How many milliseconds should local execution be delayed, if remote execution was faster during a build at least once?

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--dynamic_local_strategy" type="a '[name=]value1[,..,valueN]' assignment">
  The local strategies, in order, to use for the given mnemonic - the first applicable strategy is used. For example, `worker,sandboxed` runs actions that support persistent workers using the worker strategy, and all others using the sandboxed strategy. If no mnemonic is given, the list of strategies is used as the fallback for all mnemonics. The default fallback list is `worker,sandboxed`, or`worker,sandboxed,standalone` if `experimental_local_lockfree_output` is set. Takes [mnemonic=]local_strategy[,local_strategy,...]

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--dynamic_remote_strategy" type="a '[name=]value1[,..,valueN]' assignment">
  The remote strategies, in order, to use for the given mnemonic - the first applicable strategy is used. If no mnemonic is given, the list of strategies is used as the fallback for all mnemonics. The default fallback list is `remote`, so this flag usually does not need to be set explicitly. Takes [mnemonic=]remote_strategy[,remote_strategy,...]

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_async_execution" type="boolean" default="false">
  If set to true, Bazel is allowed to run action in a virtual thread. The number of
  actions in flight is still capped with `--jobs`.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--experimental_async_execution_max_concurrent_actions" type="an integer" default="5000">
  The number of maximum concurrent actions to run with async execution. If the value is
  less than `--jobs`, it is clamped to `--jobs`.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_docker_image" type="a string">
  Specify a Docker image name (e.g. "ubuntu:latest") that should be used to execute a sandboxed action when using the docker strategy and the action itself doesn't already have a container-image attribute in its remote_execution_properties in the platform description. The value of this flag is passed verbatim to 'docker run', so it supports the same syntax and mechanisms as Docker itself.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_docker_use_customized_images" type="boolean" default="true">
  If enabled, injects the uid and gid of the current user into the Docker image before using it. This is required if your build / tests depend on the user having a name and home directory inside the container. This is on by default, but you can disable it in case the automatic image customization feature doesn't work in your case or you know that you don't need it.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_dynamic_exclude_tools" type="boolean" default="true">
  When set, targets that are build "for tool" are not subject to dynamic execution. Such targets are extremely unlikely to be built incrementally and thus not worth spending local cycles on.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_dynamic_local_load_factor" type="a double" default="0">
  Controls how much load from dynamic execution to put on the local machine. This flag adjusts how many actions in dynamic execution we will schedule concurrently. It is based on the number of CPUs Blaze thinks is available, which can be controlled with the --local_resources=cpu= flag.
  If this flag is 0, all actions are scheduled locally immediately. If &gt; 0, the amount of actions scheduled locally is limited by the number of CPUs available. If &lt; 1, the load factor is used to reduce the number of locally scheduled actions when the number of actions waiting to schedule is high. This lessens the load on the local machine in the clean build case, where the local machine does not contribute much.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_dynamic_slow_remote_time" type="An immutable length of time." default="0">
  If &gt;0, the time a dynamically run action must run remote-only before we prioritize its local execution to avoid remote timeouts. This may hide some problems on the remote execution system. Do not turn this on without monitoring of remote execution issues.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_enable_docker_sandbox" type="boolean" default="false">
  Enable Docker-based sandboxing. This option has no effect if Docker is not installed.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_inmemory_sandbox_stashes" type="boolean" default="false">
  If set to true, the contents of stashed sandboxes for reuse_sandbox_directories will be tracked in memory. This reduces the amount of I/O needed during reuse. Depending on the build this flag may improve wall time. Depending on the build as well this flag may use a significant amount of additional memory.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_sandbox_async_tree_delete_idle_threads" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="4">
  If 0, sandboxes are deleted as soon as actions finish, blocking action completion. If greater than 0, sandboxes are deleted asynchronously in the background without blocking action completion. Asynchronous deletion uses a single thread while a command is running, but ramps up to as many threads as the value of this flag once the server becomes idle. Set to `auto` to use as many threads as the number of CPUs. A server shutdown blocks on any pending asynchronous deletions.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_sandbox_enforce_resources_regexp" type="a valid Java regular expression">
  If true, actions whose mnemonic matches the input regex will have their resources request enforced as limits, overriding the value of --experimental_sandbox_limits, if the resource type supports it. For example a test that declares cpu:3 and resources:memory:10, will run with at most 3 cpus and 10 megabytes of memory.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_sandbox_limits" type="a named double, 'name=value', where value is an integer, or a keyword (&quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;HOST_CPUS&quot;, &quot;HOST_CPUS*.5&quot;">
  If &gt; 0, each Linux sandbox will be limited to the given amount for the specified resource. Requires --incompatible_use_new_cgroup_implementation and overrides --experimental_sandbox_memory_limit_mb. Requires cgroups v1 or v2 and permissions for the users to the cgroups dir.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_sandbox_memory_limit_mb" type="an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;." default="0">
  If &gt; 0, each Linux sandbox will be limited to the given amount of memory (in MB). Requires cgroups v1 or v2 and permissions for the users to the cgroups dir.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_shrink_worker_pool" type="boolean" default="false">
  If enabled, could shrink worker pool if worker memory pressure is high. This flag works only when flag experimental_total_worker_memory_limit_mb is enabled.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_total_worker_memory_limit_mb" type="an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;." default="0">
  If this limit is greater than zero idle workers might be killed if the total memory usage of all  workers exceed the limit.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_use_hermetic_linux_sandbox" type="boolean" default="false">
  If set to true, do not mount root, only mount whats provided with sandbox_add_mount_pair. Input files will be hardlinked to the sandbox instead of symlinked to from the sandbox. If action input files are located on a filesystem different from the sandbox, then the input files will be copied instead.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_use_windows_sandbox" type="boolean" default="false">
  Use Windows sandbox to run actions. If "yes", the binary provided by --experimental_windows_sandbox_path must be valid and correspond to a supported version of sandboxfs. If "auto", the binary may be missing or not compatible.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_windows_sandbox_path" type="a string" default="BazelSandbox.exe">
  Path to the Windows sandbox binary to use when --experimental_use_windows_sandbox is true. If a bare name, use the first binary of that name found in the PATH.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_worker_allowlist" type="comma-separated set of options" default="see description">
  If non-empty, only allow using persistent workers with the given worker key mnemonic.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_worker_cancellation" type="boolean" default="false">
  If enabled, Bazel may send cancellation requests to workers that support them.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_worker_memory_limit_mb" type="an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;." default="0">
  If this limit is greater than zero, workers might be killed if the memory usage of the worker exceeds the limit. If not used together with dynamic execution and `--experimental_dynamic_ignore_local_signals=9`, this may crash your build.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--experimental_worker_metrics_poll_interval" type="An immutable length of time." default="5s">
  The interval between collecting worker metrics and possibly attempting evictions. Cannot effectively be less than 1s for performance reasons.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_worker_multiplex_sandboxing" type="boolean" default="false">
  If enabled, multiplex workers with a 'supports-multiplex-sandboxing' execution requirement will run in a sandboxed environment, using a separate sandbox directory per work request. Multiplex workers with the execution requirement are always sandboxed when running under the dynamic execution strategy, irrespective of this flag.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_worker_sandbox_hardening" type="boolean" default="false">
  If enabled, workers are run in a hardened sandbox, if the implementation allows it. If hardening is enabled then tmp directories are distinct for different workers.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_worker_sandbox_inmemory_tracking" type="a string">
  A worker key mnemonic for which the contents of the sandbox directory are tracked in memory. This may improve build performance at the cost of additional memory usage. Only affects sandboxed workers. May be specified multiple times for different mnemonics.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_worker_strict_flagfiles" type="boolean" default="false">
  If enabled, actions arguments for workers that do not follow the worker specification will cause an error. Worker arguments must have exactly one @flagfile argument as the last of its list of arguments.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--genrule_strategy" type="comma-separated list of options">
  Specify how to execute genrules. This flag will be phased out. Instead, use --spawn_strategy=&lt;value&gt; to control all actions or --strategy=Genrule=&lt;value&gt; to control genrules only.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]incompatible_use_new_cgroup_implementation" type="boolean" default="true">
  If true, use the new implementation for cgroups. The old implementation only supports the memory controller and ignores the value of --experimental_sandbox_limits.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]internal_spawn_scheduler" type="boolean" default="true">
  Placeholder option so that we can tell in Blaze whether the spawn scheduler was enabled.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--jobs" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  Short form: `-j`

  The number of concurrent jobs to run. Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". Values must be between 1 and 5000. Values above 2500 may cause memory issues. "auto" calculates a reasonable default based on host resources.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]keep_going" type="boolean" default="false">
  Short form: `-k`

  Continue as much as possible after an error.  While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--loading_phase_threads" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]reuse_sandbox_directories" type="boolean" default="true">
  If set to true, directories used by sandboxed non-worker execution may be reused to avoid unnecessary setup costs.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--sandbox_base" type="a string">
  Lets the sandbox create its sandbox directories underneath this path. Specify a path on tmpfs (like /run/shm) to possibly improve performance a lot when your build / tests have many input files. Note: You need enough RAM and free space on the tmpfs to hold output and intermediate files generated by running actions.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]sandbox_enable_loopback_device" type="boolean" default="true">
  If true, a loopback device will be set up in the linux-sandbox network namespace for local actions.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]sandbox_explicit_pseudoterminal" type="boolean" default="false">
  Explicitly enable the creation of pseudoterminals for sandboxed actions. Some linux distributions require setting the group id of the process to 'tty' inside the sandbox in order for pseudoterminals to function. If this is causing issues, this flag can be disabled to enable other groups to be used.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--sandbox_tmpfs_path" type="an absolute path">
  For sandboxed actions, mount an empty, writable directory at this absolute path (if supported by the sandboxing implementation, ignored otherwise).

  *May be used multiple times; values are accumulated.*

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]skip_incompatible_explicit_targets" type="boolean" default="false">
  Skip incompatible targets that are explicitly listed on the command line.
  By default, building such targets results in an error but they are
  silently skipped when this option is enabled. See: [Skipping incompatible targets](https://bazel.build/versions/9.2.0/extending/platforms#skipping-incompatible-targets)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--spawn_strategy" type="comma-separated list of options">
  Specify how spawn actions are executed by default. Accepts a comma-separated list of strategies from highest to lowest priority. For each action Bazel picks the strategy with the highest priority that can execute the action. The default value is "remote,worker,sandboxed,local". See https://blog.bazel.build/2019/06/19/list-strategy.html for details.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--strategy" type="a '[name=]value1[,..,valueN]' assignment">
  Specify how to distribute compilation of other spawn actions. Accepts a comma-separated list of strategies from highest to lowest priority. For each action Bazel picks the strategy with the highest priority that can execute the action. The default value is "remote,worker,sandboxed,local". This flag overrides the values set by --spawn_strategy (and --genrule_strategy if used with mnemonic Genrule). See https://blog.bazel.build/2019/06/19/list-strategy.html for details.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--strategy_regexp" type="a '&lt;RegexFilter&gt;=value[,value]' assignment">
  Override which spawn strategy should be used to execute spawn actions that have descriptions matching a certain regex_filter. See --per_file_copt for details onregex_filter matching. The last regex_filter that matches the description is used. This option overrides other flags for specifying strategy. Example: --strategy_regexp=//foo.*.cc,-//foo/bar=local means to run actions using local strategy if their descriptions match //foo.*.cc but not //foo/bar. Example: --strategy_regexp='Compiling.*/bar=local  --strategy_regexp=Compiling=sandboxed will run 'Compiling //foo/bar/baz' with the 'local' strategy, but reversing the order would run it with 'sandboxed'.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--worker_extra_flag" type="a 'name=value' assignment">
  Extra command-flags that will be passed to worker processes in addition to --persistent_worker, keyed by mnemonic (e.g. --worker_extra_flag=Javac=--debug.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--worker_max_instances" type="[name=]value, where value is an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;">
  How many instances of each kind of persistent worker may be launched if you use the 'worker' strategy. May be specified as [name=value] to give a different value per mnemonic. The limit is based on worker keys, which are differentiated based on mnemonic, but also on startup flags and environment, so there can in some cases be more workers per mnemonic than this flag specifies. Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". 'auto' calculates a reasonable default based on machine capacity. "=value" sets a default for unspecified mnemonics.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--worker_max_multiplex_instances" type="[name=]value, where value is an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;">
  How many WorkRequests a multiplex worker process may receive in parallel if you use the 'worker' strategy with --worker_multiplex. May be specified as [name=value] to give a different value per mnemonic. The limit is based on worker keys, which are differentiated based on mnemonic, but also on startup flags and environment, so there can in some cases be more workers per mnemonic than this flag specifies. Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". 'auto' calculates a reasonable default based on machine capacity. "=value" sets a default for unspecified mnemonics.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]worker_multiplex" type="boolean" default="true">
  If enabled, workers will use multiplexing if they support it.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]worker_quit_after_build" type="boolean" default="false">
  If enabled, all workers quit after a build is done.

  Tags: [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]worker_sandboxing" type="boolean" default="false">
  If enabled, singleplex workers will run in a sandboxed environment. Singleplex workers are always sandboxed when running under the dynamic execution strategy, irrespective of this flag.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]worker_verbose" type="boolean" default="false">
  If enabled, prints verbose messages when workers are started, shutdown, ...
</ParamField>


Options that control the output of the command

<ParamField path="--[no]build" type="boolean" default="true">
  Execute the build; this is the usual behaviour.
  Specifying `--nobuild` causes the build to stop before executing the build
  actions, returning zero if the package loading and analysis phases completed
  successfully; this mode is useful for testing those phases.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_use_validation_aspect" type="boolean" default="false">
  Whether to run validation actions using aspect (for parallelism with tests).

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--output_groups" type="comma-separated list of options">
  A list of comma-separated output group names, each of which optionally prefixed by a `+`
  or a `-`. A group prefixed by `+` is added to the default set of output groups,
  while a group prefixed by `-` is removed from the default set. If at least one
  group is not prefixed, the default set of output groups is omitted. For example,
  `--output_groups=+foo,+bar` builds the union of the default set, foo, and bar,
  while `--output_groups=foo,bar` overrides the default set such that only foo and
  bar are built.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]run_validations" type="boolean" default="true">
  Whether to run validation actions as part of the build. See [Validation Actions](https://bazel.build/versions/9.2.0/extending/rules#validation_actions).

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--serialized_frontier_profile" type="a string">
  Dump a profile of serialized frontier bytes. Specifies the output path.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to top-level targets. In the list, if
  aspect `some_aspect` specifies required aspect providers via
  `required_aspect_providers`, `some_aspect` will run after
  every aspect that was mentioned before it in the aspects list whose advertised
  providers satisfy `some_aspect` required aspect providers. Moreover,
  `some_aspect` will run after all its required aspects specified by
  `requires` attribute.
  `some_aspect` will then have access to the values of those aspects'
  providers.
  `{bzl-file-label}%{aspect_name}`, for example `//tools:my_def.bzl%my_aspect`, where
  `my_aspect` is a top-level value from a file `tools/my_def.bzl`.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--bep_maximum_open_remote_upload_files" type="an integer" default="-1">
  Maximum number of open files allowed during BEP artifact upload.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_convenience_symlinks" type="boolean" default="normal">
  This flag controls how the convenience symlinks (the symlinks that appear in the
  workspace after the build) will be managed. Possible values:

  - `normal` (default): Each kind of convenience symlink will be created or deleted,
  as determined by the build.
  - `clean`: All symlinks will be unconditionally deleted.
  - `ignore`: Symlinks will not be created or cleaned up.
  - `log_only`: Generate log messages as if `normal` were passed, but don't actually
  perform any filesystem operations (useful for tools).

  Note that only symlinks whose names are generated by the current value of
  `--symlink_prefix` can be affected; if the prefix changes, any pre-existing
  symlinks will be left alone.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_convenience_symlinks_bep_event" type="boolean" default="true">
  This flag controls whether or not we will post the build event
  `ConvenienceSymlinksIdentified` to the Build Event Protocol. If the value is true,
  the BEP will have an entry for `convenienceSymlinksIdentified`,
  listing all of the convenience symlinks created in your workspace. If false, then
  the `convenienceSymlinksIdentified` entry in the BEP will be empty.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_all" type="void">
  Downloads all remote outputs to the local machine. This flag is an alias for --remote_download_outputs=all.

  Expands to:
  - `--remote_download_outputs=all`

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_minimal" type="void">
  Does not download any remote build outputs to the local machine. This flag is an alias for --remote_download_outputs=minimal.

  Expands to:
  - `--remote_download_outputs=minimal`

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_outputs" type="all, minimal or toplevel" default="toplevel">
  If set to 'minimal' doesn't download any remote build outputs to the local machine, except the ones required by local actions. If set to 'toplevel' behaves like 'minimal' except that it also downloads outputs of top level targets to the local machine. Both options can significantly reduce build times if network bandwidth is a bottleneck.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_symlink_template" type="a string">
  Instead of downloading remote build outputs to the local machine, create symbolic links. The target of the symbolic links can be specified in the form of a template string. This template string may contain &lcub;hash&rcub; and &lcub;size_bytes&rcub; that expand to the hash of the object and the size in bytes, respectively. These symbolic links may, for example, point to a FUSE file system that loads objects from the CAS on demand.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_toplevel" type="void">
  Only downloads remote outputs of top level targets to the local machine. This flag is an alias for --remote_download_outputs=toplevel.

  Expands to:
  - `--remote_download_outputs=toplevel`

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--symlink_prefix" type="a string" default="see description">
  The prefix that is prepended to any of the convenience symlinks that are created
  after a build. If omitted, the default value is the name of the build tool
  followed by a hyphen. If `/` is passed, then no symlinks are created and no
  warning is emitted. Warning: the special functionality for `/` will be deprecated
  soon; use `--experimental_convenience_symlinks=ignore` instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]experimental_docker_privileged" type="boolean" default="false">
  If enabled, Bazel will pass the --privileged flag to 'docker run' when running actions. This might be required by your build, but it might also result in reduced hermeticity.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_sandboxfs_map_symlink_targets" type="boolean" default="false">
  No-op

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--sandbox_add_mount_pair" type="a single path or a 'source:target' pair">
  Add additional path pair to mount in sandbox.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--sandbox_block_path" type="a string">
  For sandboxed actions, disallow access to this path.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]sandbox_default_allow_network" type="boolean" default="true">
  Allow network access by default for actions; this may not work with all sandboxing implementations.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]sandbox_fake_hostname" type="boolean" default="false">
  Change the current hostname to 'localhost' for sandboxed actions.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]sandbox_fake_username" type="boolean" default="false">
  Change the current username to 'nobody' for sandboxed actions.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--sandbox_writable_path" type="a string">
  For sandboxed actions, make an existing directory writable in the sandbox (if supported by the sandboxing implementation, ignored otherwise).

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_config_setting_private_default_visibility" type="boolean" default="false">
  If incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enforce_config_setting_visibility" type="boolean" default="true">
  If true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]check_tests_up_to_date" type="boolean" default="false">
  Don't run tests, just check if they are up-to-date.  If all tests results are up-to-date, the testing completes successfully.  If any test needs to be built or executed, an error is reported and the testing fails.  This option implies --check_up_to_date behavior.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--flaky_test_attempts" type="a positive integer, the string &quot;default&quot;, or test_regex@attempts. This flag may be passed more than once">
  Each test will be retried up to the specified number of times in case of any test failure. Tests that required more than one attempt to pass are marked as 'FLAKY' in the test summary. Normally the value specified is just an integer or the string 'default'. If an integer, then all tests will be run up to N times. If 'default', then only a single test attempt will be made for regular tests and three for tests marked explicitly as flaky by their rule (flaky=1 attribute). Alternate syntax: regex_filter@flaky_test_attempts. Where flaky_test_attempts is as above and regex_filter stands for a list of include and exclude regular expression patterns (Also see --runs_per_test). Example: --flaky_test_attempts=//foo/.*,-//foo/bar/.*@3 deflakes all tests in //foo/ except those under foo/bar three times. This option can be passed multiple times. The most recently passed argument that matches takes precedence. If nothing matches, behavior is as if 'default' above.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--local_test_jobs" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  The max number of local test jobs to run concurrently. Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". 0 means local resources will limit the number of local test jobs to run concurrently instead. Setting this greater than the value for --jobs is ineffectual.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]test_keep_going" type="boolean" default="true">
  When disabled, any non-passing test will cause the entire build to stop. By default all tests are run, even if some do not pass.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--test_strategy" type="a string">
  Specifies which strategy to use when running tests.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--test_tmpdir" type="a path" default="see description">
  Specifies the base temporary directory for 'bazel test' to use.
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--cache_computed_file_digests" type="a long integer" default="50000">
  If greater than 0, configures Bazel to cache file digests in memory based on their metadata instead of recomputing the digests from disk every time they are needed. Setting this to 0 ensures correctness because not all file changes can be noted from file metadata. When not 0, the number indicates the size of the cache as the number of file digests to be cached.
</ParamField>

<ParamField path="--experimental_active_directories" type="comma-separated list of options">
  Active directories for Skyfocus and remote analysis caching. Specify as comma-separated workspace root-relative paths. This is a stateful flag. Defining one persists it for subsequent invocations, until it is redefined with a new set.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]experimental_cpu_load_scheduling" type="boolean" default="false">
  Enables the experimental local execution scheduling based on CPU load, not estimation of actions one by one.  Experimental scheduling have showed the large benefit on a large local builds on a powerful machines with the large number of cores. Reccommended to use with --local_resources=cpu=HOST_CPUS

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_dynamic_ignore_local_signals" type="a comma-separated list of signal numbers" default="see description">
  Takes a list of OS signal numbers. If a local branch of dynamic execution gets killed with any of these signals, the remote branch will be allowed to finish instead. For persistent workers, this only affects signals that kill the worker process.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_enable_skyfocus" type="boolean" default="false">
  If true, enable the use of --experimental_active_directories to reduce Bazel's memory footprint for incremental builds. This feature is known as Skyfocus.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--local_resources" type="a named double, 'name=value', where value is an integer, or a keyword (&quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;HOST_CPUS&quot;, &quot;HOST_CPUS*.5&quot;">
  Set the number of resources available to Bazel. Takes in an assignment to a float or HOST_RAM/HOST_CPUS, optionally followed by [-|*]&lt;float&gt; (eg. memory=HOST_RAM*.5 to use half the available RAM). Can be used multiple times to specify multiple types of resources. Bazel will limit concurrently running actions based on the available resources and the resources required. Tests can declare the amount of resources they need by using a tag of the "resources:&lt;resource name&gt;:&lt;amount&gt;" format.

  *May be used multiple times; values are accumulated.*

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--build_event_upload_max_retries" type="an integer" default="4">
  The maximum number of times Bazel should retry uploading a build event.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--[no]debug_spawn_scheduler" type="boolean" default="false">
</ParamField>

<ParamField path="--[no]experimental_bep_target_summary" type="boolean" default="false">
  Whether to publish `TargetSummary` events.
</ParamField>

<ParamField path="--[no]experimental_build_event_expand_filesets" type="boolean" default="false">
  If true, expand Filesets in the BEP when presenting output files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--experimental_build_event_output_group_mode" type="an output group name followed by an OutputGroupFileMode, e.g. default=both">
  Specify how an output group's files will be represented in `TargetComplete`/`AspectComplete`
  BEP events. Values are an assignment of an output group name to one of
  `NAMED_SET_OF_FILES_ONLY`, `INLINE_ONLY`, or `BOTH`. The default value is
  `NAMED_SET_OF_FILES_ONLY`. If an output group is repeated, the final value to
  appear is used. The default value sets the mode for coverage artifacts to BOTH:
  `--experimental_build_event_output_group_mode=baseline.lcov=both`

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--experimental_build_event_upload_retry_minimum_delay" type="An immutable length of time." default="1s">
  Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--experimental_build_event_upload_strategy" type="a string" default="see description">
  Selects how to upload artifacts referenced in the build event protocol. In Bazel
  the valid options include `local` and `remote`. The default value is `local`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_docker_verbose" type="boolean" default="false">
  If enabled, Bazel will print more verbose messages about the Docker sandbox strategy.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_frontier_violation_check" type="strict, warn or disabled_for_testing" default="strict">
  Strategies to handle potential incorrectness from changes beyond the frontier (i.e. outside the active directories)

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]experimental_frontier_violation_verbose" type="boolean" default="false">
  If true, Bazel will print instructions for fixing Skycache violations

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_materialize_param_files_directly" type="boolean" default="false">
  If materializing param files, do so with direct writes to disk.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_run_bep_event_include_residue" type="boolean" default="false">
  Whether to include the command-line residue in run build events which could contain the residue. By default, the residue is not included in run command build events that could contain the residue.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--experimental_skyfocus_dump_keys" type="none, count or verbose" default="none">
  For debugging Skyfocus. Dump the focused SkyKeys (roots, leafs, focused deps, focused rdeps).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_skyfocus_dump_post_gc_stats" type="boolean" default="false">
  For debugging Skyfocus. If enabled, trigger manual GC before/after focusing to report heap sizes reductions. This will increase the Skyfocus latency.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_stream_log_file_uploads" type="boolean" default="false">
  Stream log file uploads directly to the remote storage rather than writing them to disk.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--explain" type="a path" default="see description">
  Causes the build system to explain each executed step of the build. The explanation is written to the specified log file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]legacy_important_outputs" type="boolean" default="false">
  Use this to suppress generation of the legacy `important_outputs` field in the
  `TargetComplete` event. `important_outputs` are required for Bazel to ResultStore/BTX
  integration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]materialize_param_files" type="boolean" default="false">
  Writes intermediate parameter files to output tree even when using remote action execution or caching. Useful when debugging actions. This is implied by --subcommands and --verbose_failures.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--max_config_changes_to_show" type="an integer" default="3">
  When discarding the analysis cache due to a change in the build options, displays up to the given number of changed option names. If the number given is -1, all changed options will be displayed.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--max_test_output_bytes" type="an integer" default="-1">
  Specifies maximum per-test-log size that can be emitted when --test_output is 'errors' or 'all'. Useful for avoiding overwhelming the output with excessively noisy test output. The test header is included in the log size. Negative values imply no limit. Output is all or nothing.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--output_filter" type="a valid Java regular expression" default="see description">
  Only shows warnings and action outputs for rules with a name matching the provided regular expression.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--progress_report_interval" type="an integer in 0-3600 range" default="0">
  The number of seconds to wait between reports on still running jobs. The
  default value 0 means the first report will be printed after 10
  seconds, then 30 seconds and after that progress is reported once every minute.
  When `--curses` is enabled, progress is reported every second.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_analysis_json_log" type="a string" default="see description">
  If set, a JSON file is written to this location that contains a detailed log of the behavior of remote analysis caching. It's interpreted as a path relative to the current working directory.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--remote_print_execution_messages" type="failure, success or all" default="failure">
  Choose when to print remote execution messages. Valid values are `failure`, to print only on failures, `success` to print only on successes and `all` to print always.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]sandbox_debug" type="boolean" default="false">
  Enables debugging features for the sandboxing feature. This includes two things: first, the sandbox root contents are left untouched after a build; and second, prints extra debugging information on execution. This can help developers of Bazel or Starlark rules with debugging failures due to missing input files, etc.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--show_result" type="an integer" default="1">
  Show the results of the build. For each target, state whether or not it was brought
  up-to-date, and if so, a list of output files that were built.  The printed files
  are convenient strings for copy+pasting to the shell, to execute them.
  This option requires an integer argument, which is the threshold number of targets
  above which result information is not printed. Thus zero causes suppression of
  the message and `MAX_INT` causes printing of the result to occur always. The
  default is one.
  If nothing was built for a target its results may be omitted to keep the output
  under the threshold.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]subcommands" type="boolean" default="false">
  Short form: `-s`

  Display the subcommands executed during a build. Related flags: --execution_log_json_file, --execution_log_binary_file (for logging subcommands to a file in a tool-friendly format).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--test_output" type="summary, errors, all or streamed" default="summary">
  Specifies desired output mode. Not to be confused with `--test_summary` which controls
  the test summary printed on command completion.
  Valid values are;

  - `summary` (default) to print summaries for failed tests,
  - `errors` to also print test logs for failed tests,
  - `all` to print summaries and logs for all tests and
  - `streamed` to output logs for all tests in real time (this will force tests to be
  executed locally one at a time regardless of `--test_strategy` value).

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--test_summary" type="short, short_uncached, terse, detailed, detailed_uncached, none or testcase" default="short">
  Specifies the desired format of the test summary. Valid values are;

  - `short` to list all tests that ran to completion.
  - `short_uncached` to list tests that ran to completion, omitting cached tests.
  - `terse` to list only failed and flaky tests.
  - `detailed` to list tests that ran to completion and their test cases.
  - `detailed_uncached` to list tests that ran to completion and their test cases,
  omitting cached tests.
  - `testcase` to print summary in test case resolution without detailed information about
  failed test cases.
  - `none` to omit the summary.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose_failures" type="boolean" default="false">
  If a command fails, print out the full command line.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--aspects_parameters" type="a 'name=value' assignment">
  Specifies the values of the command-line aspects parameters. Each parameter value is
  specified via `<param_name>=<param_value>`, for example `my_param=my_val` where
  `my_param` is a parameter of some aspect in `--aspects` list or required by an
  aspect in the list. This option can be used multiple times. However, it is not
  allowed to assign values to the same parameter more than once.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--target_pattern_file" type="a string">
  If set, build will read patterns from the file named here, rather than on the command line. It is an error to specify a file here as well as command-line patterns.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Remote caching and execution options

<ParamField path="--experimental_circuit_breaker_strategy" type="failure" default="see description">
  Specifies the strategy for the circuit breaker to use. Available strategies are "failure". On invalid value for the option the behavior same as the option is not set.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_remote_cache_chunking" type="boolean" default="false">
  If enabled, large blobs are split into content-defined chunks using FastCDC 2020 and uploaded/downloaded in chunks, enabling deduplication across blobs. The server must advertise SplitBlob/SpliceBlob RPCs and FastCDC 2020 parameters in its capabilities.

  Tags: [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_remote_cache_compression_threshold" type="an integer" default="100">
  The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote_cache_compression is set.
</ParamField>

<ParamField path="--experimental_remote_cache_eviction_retries" type="an integer" default="5">
  The maximum number of attempts to retry if the build encountered a transient remote cache error that would otherwise fail the build. Applies for example when artifacts are evicted from the remote cache, or in certain cache failure conditions. A new invocation id will be generated for each attempt.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_remote_cache_lease_extension" type="boolean" default="false">
  If set to true, Bazel will extend the lease for outputs of remote actions during the build by sending `FindMissingBlobs` calls periodically to remote cache. The frequency is based on the value of `--experimental_remote_cache_ttl`.
</ParamField>

<ParamField path="--experimental_remote_cache_ttl" type="An immutable length of time." default="3h">
  The guaranteed minimal TTL of blobs in the remote cache after their digests are recently referenced e.g. by an ActionResult or FindMissingBlobs. Bazel does several optimizations based on the blobs' TTL e.g. doesn't repeatedly call GetActionResult in an incremental build. The value should be set slightly less than the real TTL since there is a gap between when the server returns the digests and when Bazel receives them.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_remote_capture_corrupted_outputs" type="a path" default="see description">
  A path to a directory where the corrupted outputs will be captured to.
</ParamField>

<ParamField path="--[no]experimental_remote_discard_merkle_trees" type="boolean" default="true">
  If set to true, discard in-memory copies of the input root's Merkle tree and associated input mappings during calls to GetActionResult() and Execute(). This reduces memory usage significantly, but does require Bazel to recompute them upon remote cache misses and retries.
</ParamField>

<ParamField path="--experimental_remote_downloader" type="a string" default="see description">
  A Remote Asset API endpoint URI, to be used as a remote download proxy. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. See: https://github.com/bazelbuild/remote-apis/blob/master/build/bazel/remote/asset/v1/remote_asset.proto
</ParamField>

<ParamField path="--[no]experimental_remote_downloader_local_fallback" type="boolean" default="false">
  Whether to fall back to the local downloader if remote downloader fails.
</ParamField>

<ParamField path="--[no]experimental_remote_downloader_propagate_credentials" type="boolean" default="false">
  Whether to propagate credentials from netrc and credential helper to the remote downloader server. The server implementation needs to support the new `http_header_url:<url-index>:<header-key>` qualifier where the `<url-index>` is a 0-based position of the URL inside the FetchBlobRequest's `uris` field. The URL-specific headers should take precedence over the global headers.
</ParamField>

<ParamField path="--experimental_remote_failure_rate_threshold" type="an integer in 0-100 range" default="10">
  Sets the allowed number of failure rate in percentage for a specific time window after which it stops calling to the remote cache/executor. By default the value is 10. Setting this to 0 means no limitation.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_remote_failure_window_interval" type="An immutable length of time." default="60s">
  The interval in which the failure rate of the remote requests are computed. On zero or negative value the failure duration is computed the whole duration of the execution.Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]experimental_remote_mark_tool_inputs" type="boolean" default="false">
  If set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.
</ParamField>

<ParamField path="--experimental_remote_output_service" type="a string" default="see description">
  HOST or HOST:PORT of a remote output service endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.
</ParamField>

<ParamField path="--experimental_remote_output_service_output_path_prefix" type="a string">
  The path under which the contents of output directories managed by the --experimental_remote_output_service are placed. The actual output directory used by a build will be a descendant of this path and determined by the output service.
</ParamField>

<ParamField path="--[no]experimental_remote_require_cached" type="boolean" default="false">
  If set to true, enforce that all actions that can run remotely are cached, or else fail the build. This is useful to troubleshoot non-determinism issues as it allows checking whether actions that should be cached are actually cached without spuriously injecting new results into the cache.
</ParamField>

<ParamField path="--experimental_remote_scrubbing_config" type="Converts to a Scrubber" default="see description">
  Enables remote cache key scrubbing with the supplied configuration file, which must be a protocol buffer in text format (see src/main/protobuf/remote_scrubbing.proto).
  This feature is intended to facilitate sharing a remote/disk cache between actions executing on different platforms but targeting the same platform. It should be used with extreme care, as improper settings may cause accidental sharing of cache entries and result in incorrect builds.
  Scrubbing does not affect how an action is executed, only how its remote/disk cache key is computed for the purpose of retrieving or storing an action result. Scrubbed actions are incompatible with remote execution, and will always be executed locally instead.
  Modifying the scrubbing configuration does not invalidate outputs present in the local filesystem or internal caches; a clean build is required to reexecute affected actions.
  In order to successfully use this feature, you likely want to set a custom --host_platform together with --experimental_platform_in_output_dir (to normalize output prefixes).
</ParamField>

<ParamField path="--[no]guard_against_concurrent_changes" type="boolean" default="lite">
  Set this to 'full' to enable checking the ctime of all input files of an action before uploading it to a remote cache. There may be cases where the Linux kernel delays writing of files, which could cause false positives. The default is 'lite', which only checks source files in the main repository. Setting this to 'off' disables all checks. This is not recommended, as the cache may be polluted when a source file is changed while an action that takes it as an input is executing.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]incompatible_remote_local_fallback_for_remote_cache" type="boolean" default="false">
  Whether --remote_local_fallback applies to --remote_cache.
</ParamField>

<ParamField path="--[no]remote_accept_cached" type="boolean" default="true">
  Whether to accept remotely cached action results.
</ParamField>

<ParamField path="--remote_build_event_upload" type="all or minimal" default="minimal">
  If set to 'all', all local outputs referenced by BEP are uploaded to remote cache.
  If set to 'minimal', local outputs referenced by BEP are not uploaded to the remote cache, except for files that are important to the consumers of BEP (e.g. test logs and timing profile). bytestream:// scheme is always used for the uri of files even if they are missing from remote cache.
  Default to 'minimal'.
</ParamField>

<ParamField path="--remote_bytestream_uri_prefix" type="a string" default="see description">
  The hostname and instance name to be used in bytestream:// URIs that are written into build event streams. This option can be set when builds are performed using a proxy, which causes the values of --remote_executor and --remote_instance_name to no longer correspond to the canonical name of the remote execution service. When not set, it will default to "&#36;&lcub;hostname&rcub;/&#36;&lcub;instance_name&rcub;".
</ParamField>

<ParamField path="--remote_cache" type="a string" default="see description">
  A URI of a caching endpoint. The supported schemas are http, https, grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc://, http:// or unix: schema to disable TLS. See https://bazel.build/remote/caching
</ParamField>

<ParamField path="--[no]remote_cache_async" type="boolean" default="true">
  If true, uploading of action results to a disk or remote cache will happen in the background instead of blocking the completion of an action. Some actions are incompatible with background uploads, and may still block even when this flag is set.
</ParamField>

<ParamField path="--[no]remote_cache_compression" type="boolean" default="false">
  If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental_remote_cache_compression_threshold.
</ParamField>

<ParamField path="--remote_cache_header" type="a 'name=value' assignment">
  Specify a header that will be included in cache requests: --remote_cache_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_default_exec_properties" type="a 'name=value' assignment">
  Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec_properties.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_download_regex" type="a valid Java regular expression">
  Force remote build outputs whose path matches this pattern to be downloaded, irrespective of --remote_download_outputs. Multiple patterns may be specified by repeating this flag.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--remote_downloader_header" type="a 'name=value' assignment">
  Specify a header that will be included in remote downloader requests: --remote_downloader_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_exec_header" type="a 'name=value' assignment">
  Specify a header that will be included in execution requests: --remote_exec_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_execution_priority" type="an integer" default="0">
  The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.
</ParamField>

<ParamField path="--remote_executor" type="a string" default="see description">
  HOST or HOST:PORT of a remote execution endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.
</ParamField>

<ParamField path="--remote_grpc_log" type="a path" default="see description">
  If specified, a path to a file to log gRPC call related details. This log consists of a sequence of serialized com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.LogEntry protobufs with each message prefixed by a varint denoting the size of the following serialized protobuf message, as performed by the method LogEntry.writeDelimitedTo(OutputStream).
</ParamField>

<ParamField path="--remote_header" type="a 'name=value' assignment">
  Specify a header that will be included in requests: --remote_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--remote_instance_name" type="a string">
  Value to pass as instance_name in the remote execution API.
</ParamField>

<ParamField path="--[no]remote_local_fallback" type="boolean" default="false">
  Whether to fall back to standalone local execution strategy if remote execution fails.
</ParamField>

<ParamField path="--remote_local_fallback_strategy" type="a string" default="local">
  Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.
</ParamField>

<ParamField path="--remote_max_concurrency_per_connection" type="an integer" default="100">
  Limit the max number of concurrent requests per gRPC connection. By default the value is 100.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--remote_max_connections" type="an integer" default="100">
  Limit the max number of concurrent connections to remote cache/executor. By default the value is 100. Setting this to 0 means no limitation.
  For HTTP remote cache, one TCP connection could handle one request at one time, so Bazel could make up to --remote_max_connections concurrent requests.
  For gRPC remote cache/executor, one gRPC channel could usually handle 100+ concurrent requests (controlled by --remote_max_concurrency_per_connection), so Bazel could make around `--remote_max_connections * 100` concurrent requests.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--remote_proxy" type="a string" default="see description">
  Connect to the remote cache through a proxy. Currently this flag can only be used to configure a Unix domain socket (unix:/path/to/socket).
</ParamField>

<ParamField path="--remote_result_cache_priority" type="an integer" default="0">
  The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.
</ParamField>

<ParamField path="--remote_retries" type="an integer" default="5">
  The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.
</ParamField>

<ParamField path="--remote_retry_max_delay" type="An immutable length of time." default="5s">
  The maximum backoff delay between remote retry attempts. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
</ParamField>

<ParamField path="--remote_timeout" type="An immutable length of time." default="60s">
  The maximum amount of time to wait for remote execution and cache calls. For the REST cache, this is both the connect and the read timeout. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
</ParamField>

<ParamField path="--[no]remote_upload_local_results" type="boolean" default="true">
  Whether to upload locally executed action results to the remote cache if the remote cache supports it and the user is authorized to do so.
</ParamField>

<ParamField path="--[no]remote_verify_downloads" type="boolean" default="true">
  If set to true, Bazel will compute the hash sum of all remote downloads and  discard the remotely cached values if they don't match the expected value.
</ParamField>

<ParamField path="--[no]rewind_lost_inputs" type="boolean" default="false">
  Whether to use action rewinding to recover from lost inputs.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--[no]allow_analysis_cache_discard" type="boolean" default="true">
  If discarding the analysis cache due to a change in the build system, setting this
  option to false will cause bazel to exit, rather than continuing with the build.
  This option has no effect when `--discard_analysis_cache` is also set.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--auto_output_filter" type="none, all, packages or subpackages" default="none">
  If --output_filter is not specified, then the value for this option is used create a filter automatically. Allowed values are 'none' (filter nothing / show everything), 'all' (filter everything / show nothing), 'packages' (include output from rules in packages mentioned on the Blaze command line), and 'subpackages' (like 'packages', but also include subpackages). For the 'packages' and 'subpackages' values //java/foo and //javatests/foo are treated as one package)'.
</ParamField>

<ParamField path="--[no]build_manual_tests" type="boolean" default="false">
  Forces test targets tagged 'manual' to be built. 'manual' tests are excluded from processing. This option forces them to be built (but not executed).
</ParamField>

<ParamField path="--build_tag_filters" type="comma-separated list of options">
  Specifies a comma-separated list of tags. Each tag can be optionally preceded with '-' to specify excluded tags. Only those targets will be built that contain at least one included tag and do not contain any excluded tags. This option does not affect the set of tests executed with the 'test' command; those are be governed by the test filtering options, for example '--test_tag_filters'
</ParamField>

<ParamField path="--[no]build_tests_only" type="boolean" default="false">
  If specified, only *_test and test_suite rules will be built and other targets specified on the command line will be ignored. By default everything that was requested will be built.
</ParamField>

<ParamField path="--combined_report" type="none or lcov" default="lcov">
  Specifies desired cumulative coverage report type. At this point only LCOV is supported.
</ParamField>

<ParamField path="--[no]compile_one_dependency" type="boolean" default="false">
  Compile a single dependency of the argument files. This is useful for syntax checking source files in IDEs, for example, by rebuilding a single target that depends on the source file to detect errors as early as possible in the edit/build/test cycle. This argument affects the way all non-flag arguments are interpreted; instead of being targets to build they are source filenames.  For each source filename an arbitrary target that depends on it will be built.
</ParamField>

<ParamField path="--deleted_packages" type="comma-separated list of package names">
  A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
  Use this option when deleting a subpackage 'x/y' of an existing package 'x'.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label '//x:y/z' if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]discard_analysis_cache" type="boolean" default="false">
  Discard the analysis cache immediately after the analysis phase completes. Reduces memory usage by ~10%, but makes further incremental builds slower.
</ParamField>

<ParamField path="--disk_cache" type="a path" default="see description">
  A path to a directory where Bazel can read and write actions and action outputs. If the directory does not exist, it will be created.
</ParamField>

<ParamField path="--embed_label" type="a one-line string">
  Embed source control revision or release label in binary
</ParamField>

<ParamField path="--execution_log_binary_file" type="a path" default="see description">
  Log the executed spawns into this file as length-delimited SpawnExec protos, according to src/main/protobuf/spawn.proto. Prefer --execution_log_compact_file, which is significantly smaller and cheaper to produce. Related flags: --execution_log_compact_file (compact format; mutually exclusive), --execution_log_json_file (text JSON format; mutually exclusive), --execution_log_sort (whether to sort the execution log), --subcommands (for displaying subcommands in terminal output).
</ParamField>

<ParamField path="--execution_log_compact_file" type="a path" default="see description">
  Log the executed spawns into this file as length-delimited ExecLogEntry protos, according to src/main/protobuf/spawn.proto. The entire file is zstd compressed. Related flags: --execution_log_binary_file (binary protobuf format; mutually exclusive), --execution_log_json_file (text JSON format; mutually exclusive), --subcommands (for displaying subcommands in terminal output).
</ParamField>

<ParamField path="--execution_log_json_file" type="a path" default="see description">
  Log the executed spawns into this file as newline-delimited JSON representations of SpawnExec protos, according to src/main/protobuf/spawn.proto. Prefer --execution_log_compact_file, which is significantly smaller and cheaper to produce. Related flags: --execution_log_compact_file (compact format; mutually exclusive), --execution_log_binary_file (binary protobuf format; mutually exclusive), --execution_log_sort (whether to sort the execution log), --subcommands (for displaying subcommands in terminal output).
</ParamField>

<ParamField path="--[no]execution_log_sort" type="boolean" default="true">
  Whether to sort the execution log, making it easier to compare logs across invocations. Set to false to avoid potentially significant CPU and memory usage at the end of the invocation, at the cost of producing the log in nondeterministic execution order. Only applies to the binary and JSON formats; the compact format is never sorted.
</ParamField>

<ParamField path="--[no]expand_test_suites" type="boolean" default="true">
  Expand test_suite targets into their constituent tests before analysis. When this flag is turned on (the default), negative target patterns will apply to the tests belonging to the test suite, otherwise they will not. Turning off this flag is useful when top-level aspects are applied at command line: then they can analyze test_suite targets.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_disk_cache_gc_idle_delay" type="An immutable length of time." default="5m">
  How long the server must remain idle before a garbage collection of the disk cache occurs. To specify the garbage collection policy, set --experimental_disk_cache_gc_max_size and/or --experimental_disk_cache_gc_max_age.
</ParamField>

<ParamField path="--experimental_disk_cache_gc_max_age" type="An immutable length of time." default="0">
  If set to a positive value, the disk cache will be periodically garbage collected to remove entries older than this age. If set in conjunction with --experimental_disk_cache_gc_max_size, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental_disk_cache_gc_idle_delay flag.
</ParamField>

<ParamField path="--experimental_disk_cache_gc_max_size" type="a size in bytes, optionally followed by a K, M, G or T multiplier" default="0">
  If set to a positive value, the disk cache will be periodically garbage collected to stay under this size. If set in conjunction with --experimental_disk_cache_gc_max_age, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental_disk_cache_gc_idle_delay flag.
</ParamField>

<ParamField path="--experimental_extra_action_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths">
  Deprecated in favor of aspects. Filters set of targets to schedule extra_actions for.
</ParamField>

<ParamField path="--[no]experimental_extra_action_top_level_only" type="boolean" default="false">
  Deprecated in favor of aspects. Only schedules extra_actions for top level targets.
</ParamField>

<ParamField path="--experimental_spawn_scheduler" type="void">
  Enable dynamic execution by running actions locally and remotely in parallel. Bazel spawns each action locally and remotely and picks the one that completes first. If an action supports workers, the local action will be run in the persistent worker mode. To enable dynamic execution for an individual action mnemonic, use the `--internal_spawn_scheduler` and `--strategy=<mnemonic>=dynamic` flags instead.

  Expands to:
  - `--internal_spawn_scheduler`
  - `--spawn_strategy=dynamic`
</ParamField>

<ParamField path="--[no]fetch" type="boolean" default="true">
  Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
</ParamField>

<ParamField path="--local_termination_grace_seconds" type="an integer" default="15">
  Time to wait between terminating a local process due to timeout and forcefully shutting it down.
</ParamField>

<ParamField path="--package_path" type="colon-separated list of options" default="%workspace%">
  A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.
</ParamField>

<ParamField path="--[no]show_loading_progress" type="boolean" default="true">
  If enabled, causes Bazel to print "Loading package:" messages.
</ParamField>

<ParamField path="--test_lang_filters" type="comma-separated list of options">
  Specifies a comma-separated list of test languages. Each language can be optionally preceded with '-' to specify excluded languages. Only those test targets will be found that are written in the specified languages. The name used for each language should be the same as the language prefix in the *_test rule, e.g. one of 'cc', 'java', 'py', etc. This option affects --build_tests_only behavior and the test command.
</ParamField>

<ParamField path="--test_size_filters" type="comma-separated list of values: small, medium, large, or enormous">
  Specifies a comma-separated list of test sizes. Each size can be optionally preceded with '-' to specify excluded sizes. Only those test targets will be found that contain at least one included size and do not contain any excluded sizes. This option affects --build_tests_only behavior and the test command.
</ParamField>

<ParamField path="--test_tag_filters" type="comma-separated list of options">
  Specifies a comma-separated list of test tags. Each tag can be optionally preceded with '-' to specify excluded tags. Only those test targets will be found that contain at least one included tag and do not contain any excluded tags. This option affects --build_tests_only behavior and the test command.
</ParamField>

<ParamField path="--test_timeout_filters" type="comma-separated list of values: short, moderate, long, or eternal">
  Specifies a comma-separated list of test timeouts. Each timeout can be optionally preceded with '-' to specify excluded timeouts. Only those test targets will be found that contain at least one included timeout and do not contain any excluded timeouts. This option affects --build_tests_only behavior and the test command.
</ParamField>

<ParamField path="--workspace_status_command" type="path">
  A command invoked at the beginning of the build to provide status
  information about the workspace in the form of key/value pairs.
  See the User's Manual for the full specification. Also see
  `tools/buildstamp/get_workspace_status` for an example.
</ParamField>


Options that control build execution

<ParamField path="--[no]experimental_persistent_aar_extractor" type="boolean" default="false">
  Enable persistent aar extractor by using workers.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_split_coverage_postprocessing" type="boolean" default="false">
  If true, then Bazel will run coverage postprocessing for test in a new spawn.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--persistent_android_dex_desugar" type="void">
  Enable persistent Android dex and desugar actions by using workers.

  Expands to:
  - `--internal_persistent_android_dex_desugar`
  - `--strategy=Desugar=worker`
  - `--strategy=DexBuilder=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_android_resource_processor" type="void">
  Enable persistent Android resource processor by using workers.

  Expands to:
  - `--internal_persistent_busybox_tools`
  - `--strategy=AaptPackage=worker`
  - `--strategy=AndroidResourceParser=worker`
  - `--strategy=AndroidResourceValidator=worker`
  - `--strategy=AndroidResourceCompiler=worker`
  - `--strategy=RClassGenerator=worker`
  - `--strategy=AndroidResourceLink=worker`
  - `--strategy=AndroidAapt2=worker`
  - `--strategy=AndroidAssetMerger=worker`
  - `--strategy=AndroidResourceMerger=worker`
  - `--strategy=AndroidCompiledResourceMerger=worker`
  - `--strategy=ManifestMerger=worker`
  - `--strategy=AndroidManifestMerger=worker`
  - `--strategy=Aapt2Optimize=worker`
  - `--strategy=AARGenerator=worker`
  - `--strategy=ProcessDatabinding=worker`
  - `--strategy=GenerateDataBindingBaseClasses=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_dex_desugar" type="void">
  Enable persistent multiplexed Android dex and desugar actions by using workers.

  Expands to:
  - `--persistent_android_dex_desugar`
  - `--internal_persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_resource_processor" type="void">
  Enable persistent multiplexed Android resource processor by using workers.

  Expands to:
  - `--persistent_android_resource_processor`
  - `--modify_execution_info=AaptPackage=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers`
  - `--modify_execution_info=RClassGenerator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAapt2=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=ManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers`
  - `--modify_execution_info=AARGenerator=+supports-multiplex-workers`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_tools" type="void">
  Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

  Expands to:
  - `--internal_persistent_multiplex_busybox_tools`
  - `--persistent_multiplex_android_resource_processor`
  - `--persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--android_compiler" type="a string" default="see description">
  The Android target compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_manifest_merger" type="legacy, android or force_android" default="android">
  Selects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_platforms" type="a build target label">
  Sets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--cc_output_directory_tag" type="a string">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compiler" type="a string" default="see description">
  The C++ compiler to use for compiling the target.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--coverage_output_generator" type="a build target label" default="@bazel_tools//tools/test:lcov_merger">
  Location of the binary that is used to postprocess raw coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:lcov_merger`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_report_generator" type="a build target label" default="@bazel_tools//tools/test:coverage_report_generator">
  Location of the binary that is used to generate coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:coverage_report_generator`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_support" type="a build target label" default="@bazel_tools//tools/test:coverage_support">
  Location of support files that are required on the inputs of every test action
  that collects code coverage. Defaults to `//tools/test:coverage_support`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--custom_malloc" type="a build target label" default="see description">
  Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_include_xcode_execution_requirements" type="boolean" default="false">
  If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action.  If the Xcode version has a hyphenated label,  also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_prefer_mutual_xcode" type="boolean" default="true">
  If true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--extra_execution_platforms" type="comma-separated list of options">
  The platforms that are available as execution platforms to run actions.
  Platforms can be specified by exact target, or as a target pattern.
  These platforms will be considered before those declared in the `WORKSPACE` file by
  `register_execution_platforms()`. This option may only be set once; later
  instances will override earlier flag settings.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--extra_toolchains" type="comma-separated list of options">
  The toolchain rules to be considered during toolchain resolution.
  Toolchains can be specified by exact target, or as a target pattern.
  These toolchains will be considered before those declared in the `WORKSPACE` file
  by `register_toolchains()`.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--grte_top" type="a label" default="see description">
  A label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_compiler" type="a string" default="see description">
  No-op flag. Will be removed in a future release.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--host_grte_top" type="a label" default="see description">
  If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_platform" type="a build target label" default="@bazel_tools//tools:host_platform">
  The label of a platform rule that describes the host system.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_builtin_objc_strip_action" type="boolean" default="true">
  Whether to emit a strip action as part of objc linking.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_dont_enable_host_nonhost_crosstool_features" type="boolean" default="true">
  If true, Bazel will not enable 'host' and 'nonhost' features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enable_apple_toolchain_resolution" type="boolean" default="false">
  Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_remove_legacy_whole_archive" type="boolean" default="true">
  If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strip_executable_safely" type="boolean" default="false">
  If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]interface_shared_objects" type="boolean" default="true">
  Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--macos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--minimum_os_version" type="a string" default="see description">
  The minimum OS version which your compilation targets.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_mappings" type="a main workspace-relative path">
  The location of a mapping file that describes which platform to use if none is set or
  which flags to set when a platform already exists. Must be relative to the main
  workspace root. Defaults to `platform_mappings` (a file directly under the
  workspace root).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--platforms" type="a build target label">
  The labels of the platform rules describing the target platforms for the current command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_path" type="a string" default="see description">
  The absolute path of the Python interpreter invoked to run Python targets on the
  target platform. Deprecated; disabled by `--incompatible_use_python_toolchains`.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]use_platforms_in_apple_crosstool_transition" type="boolean" default="false">
  Makes apple_crosstool_transition fall back to using the value of `--platforms` flag instead of legacy `--cpu` when needed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version" type="a string" default="see description">
  If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version_config" type="a build target label" default="@bazel_tools//tools/cpp:host_xcodes">
  The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]apple_generate_dsym" type="boolean" default="false">
  Whether to generate debug symbol(.dSYM) file(s).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_test_dwp" type="boolean" default="false">
  If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cc_proto_library_header_suffixes" type="comma-separated set of options" default=".pb.h">
  Sets the suffixes of header files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--cc_proto_library_source_suffixes" type="comma-separated set of options" default=".pb.cc">
  Sets the suffixes of source files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]experimental_proto_descriptor_sets_include_source_info" type="boolean" default="false">
  Run extra actions for alternative Java api versions in a proto_library.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_save_feature_state" type="boolean" default="false">
  Save the state of enabled and requested feautres as an output of compilation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fission" type="a set of compilation modes" default="no">
  Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes'  to enable all modes and 'no' to disable all modes.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]objc_generate_linkmap" type="boolean" default="false">
  Specifies whether to generate a linkmap file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]save_temps" type="boolean" default="false">
  If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]android_databinding_use_androidx" type="boolean" default="true">
  Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]android_databinding_use_v3_4_args" type="boolean" default="true">
  Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--android_dynamic_mode" type="off, default or fully" default="off">
  Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--android_manifest_merger_order" type="alphabetical, alphabetical_by_configuration or dependency" default="alphabetical">
  Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library's manifest coming before the manifests of its dependencies.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--catalyst_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple Catalyst binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--conlyopt" type="a string">
  Additional option to pass to gcc when compiling C source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--copt" type="a string">
  Additional options to pass to gcc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_absolute_path" type="a string" default="see description">
  Use CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_instrument" type="a string" default="see description">
  Generate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_profile" type="a build target label" default="see description">
  The cs_fdo_profile representing the context sensitive profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cxxopt" type="a string">
  Additional option to pass to gcc when compiling C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--dynamic_mode" type="off, default or fully" default="default">
  Determines whether C++ binaries will be linked dynamically.  'default' means Bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_propeller_optimize_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for propeller optimize will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_remaining_fdo_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for FDO will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_compress_java_resources" type="boolean" default="false">
  Compress Java resources in APKs

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_databinding_v2" type="boolean" default="true">
  Use android databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_rewrite_dexes_with_rex" type="boolean" default="false">
  use rex tool to rewrite dex files

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_objc_fastbuild_options" type="comma-separated list of options" default="-O0,-DDEBUG=1">
  Uses these strings as objc fastbuild compiler options.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]experimental_omitfp" type="boolean" default="false">
  If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_py_binaries_include_label" type="boolean" default="false">
  py_binary targets include their label even when stamping is disabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_llvm_covmap" type="boolean" default="false">
  If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fdo_instrument" type="a string" default="see description">
  Generate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_optimize" type="a string" default="see description">
  Use FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g. `//foo/bar:file.afdo` - you may need to add an `exports_files` directive to the corresponding package) and labels pointing to `fdo_profile` targets. This flag will be superseded by the `fdo_profile` rule.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_prefetch_hints" type="a build target label" default="see description">
  Use cache prefetch hints.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_profile" type="a build target label" default="see description">
  The fdo_profile representing the profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]force_pic" type="boolean" default="false">
  If enabled, all C++ compilations produce position-independent code ("-fPIC"), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables ("-pie").

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_conlyopt" type="a string">
  Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_copt" type="a string">
  Additional options to pass to the C compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cxxopt" type="a string">
  Additional options to pass to C++ compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_linkopt" type="a string">
  Additional option to pass to linker when linking tools in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for host targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--host_per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--ios_multi_cpus" type="comma-separated list of options">
  Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]legacy_whole_archive" type="boolean" default="true" deprecated>
  Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)
</ParamField>

<ParamField path="--linkopt" type="a string">
  Additional option to pass to gcc when linking.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltobackendopt" type="a string">
  Additional option to pass to the LTO backend step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltoindexopt" type="a string">
  Additional option to pass to the LTO indexing step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--macos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple macOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--memprof_profile" type="a build target label" default="see description">
  Use memprof profile.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]objc_debug_with_GLIBCXX" type="boolean" default="false">
  If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]objc_enable_binary_stripping" type="boolean" default="false">
  Whether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and --compilation_mode=opt are specified.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--objccopt" type="a string">
  Additional options to pass to gcc when compiling Objective-C/C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--per_file_ltobackendopt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to LTO backend (under --features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--propeller_optimize" type="a build target label" default="see description">
  Use Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile.  This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize(    name = "propeller_profile",    cc_profile = "propeller_cc_profile.txt",    ld_profile = "propeller_ld_profile.txt",)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: --propeller_optimize=//a/b:propeller_profile

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_cc_profile" type="a string" default="see description">
  Absolute path name of cc_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_ld_profile" type="a string" default="see description">
  Absolute path name of ld_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]share_native_deps" type="boolean" default="true">
  If true, native libraries that contain identical functionality will be shared among different targets

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--strip" type="always, sometimes or never" default="sometimes">
  Specifies whether to strip binaries and shared libraries  (using "-Wl,--strip-debug").  The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--stripopt" type="a string">
  Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple tvOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--tvos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--visionos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple visionOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple watchOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xbinary_fdo" type="a build target label" default="see description">
  Use XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with --fdo_instrument/--fdo_optimize/--fdo_profile, those options will always prevail as if xbinary_fdo is never specified.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]desugar_for_android" type="boolean" default="true">
  Whether to desugar Java 8 bytecode before dexing.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]desugar_java8_libs" type="boolean" default="false">
  Whether to include supported Java 8 libraries in apps for legacy devices.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_check_desugar_deps" type="boolean" default="true">
  Whether to double-check correct desugaring at Android binary level.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_one_version_enforcement" type="off, warning or error" default="OFF">
  When enabled, enforce that a java_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_strict_java_deps" type="off, warn, error, strict or default" default="default">
  If true, checks that a Java target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_android_rules" type="boolean" default="false">
  If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_apple_binary_rule" type="boolean" default="false">
  No-op. Kept here for backwards compatibility.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]one_version_enforcement_on_java_tests" type="boolean" default="true">
  When enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_native_rules_allowlist" type="a build target label" default="see description">
  An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--strict_proto_deps" type="off, warn, error, strict or default" default="error">
  Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--strict_public_imports" type="off, warn, error, strict or default" default="off">
  Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_system_includes" type="boolean" default="false">
  If true, headers found through system include paths (-isystem) are also required to be declared.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Options that affect the signing outputs of a build

<ParamField path="--apk_signing_method" type="v1, v2, v1_v2 or v4" default="v1_v2">
  Implementation to use to sign APKs

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]device_debug_entitlements" type="boolean" default="true">
  If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--ios_signing_cert_name" type="a string" default="see description">
  Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_disallow_sdk_frameworks_attributes" type="boolean" default="false">
  If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_objc_alwayslink_by_default" type="boolean" default="false">
  If true, make the default value true for alwayslink attributes in objc_library and objc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_python_disallow_native_rules" type="boolean" default="false">
  When true, an error occurs when using the builtin py_* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]break_build_on_parallel_dex2oat_failure" type="boolean" default="false">
  If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--default_test_resources" type="a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100">
  Override the default resources amount for tests. The expected format is
  `{resource}={value}`. If a single positive number is specified as `{value}`
  it will override the default resources for all test sizes. If 4
  comma-separated numbers are specified, they will override the resource
  amount for respectively the `small`, `medium`, `large`, `enormous` test sizes.
  Values can also be `HOST_RAM`/`HOST_CPU`, optionally followed
  by `[-|*]{float}` (eg. `memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4`).
  The default test resources specified by this flag are overridden by explicit
  resources specified in tags.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]experimental_android_use_parallel_dex2oat" type="boolean" default="false">
  Use dex2oat in parallel to possibly speed up android_test.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]ios_memleaks" type="boolean" default="false">
  Enable checking for memory leaks in ios_test targets.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--ios_simulator_device" type="a string" default="see description">
  The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--ios_simulator_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--runs_per_test" type="a positive integer or test_regex@runs. This flag may be passed more than once">
  Specifies number of times to run each test. If any of those attempts fail for any
  reason, the whole test is considered failed. Normally the value specified is
  just an integer.
  Example: `--runs_per_test=3` will run all tests 3 times.
  Alternate syntax: `regex_filter@runs_per_test`. Where `runs_per_test` stands for
  an integer value and `regex_filter` stands for a list of include and exclude
  regular expression patterns (Also see --instrumentation_filter).
  Example: `--runs_per_test=//foo/.*,-//foo/bar/.*@3` runs all tests in `//foo/` except
  those under `//foo/bar` three times. This option can be passed multiple times. The most
  recently passed argument that matches takes precedence. If nothing matches,
  the test is only run once.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies additional environment variables to be injected into the test runner
  environment. Variables can be either specified by `name`, in which
  case its value will be read from the Bazel client environment, or by the
  `name=value` pair.
  Previously set variables can be unset via `=name`.
  This option can be used multiple times to specify several variables.
  Used only by the 'bazel test' command.

  *May be used multiple times; values are accumulated.*

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--test_timeout" type="a single integer or comma-separated list of 4 integers" default="-1">
  Override the default test timeout values for test timeouts (in secs). If a single
  positive integer value is specified it will override all categories.  If 4
  comma-separated integers are specified, they will override the timeouts for
  `short`, `moderate`, `long` and `eternal` (in that order). In either form, a value of
  -1 tells blaze to use its default timeouts for that category.
</ParamField>

<ParamField path="--[no]zip_undeclared_test_outputs" type="boolean" default="false">
  If true, undeclared test outputs will be archived in a zip file.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--[no]cc_dotd_files" type="boolean" default="true">
  Whether to generate and analyze .d files.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]cc_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_filter_library_jar_with_program_jar" type="boolean" default="false">
  Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_dotd_files" type="boolean" default="true">
  If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_jdeps_files" type="boolean" default="true">
  If enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_retain_test_configuration_across_testonly" type="boolean" default="true">
  When enabled, `--trim_test_configuration` will not trim the test configuration for rules
  marked testonly=1. This is meant to reduce action conflict issues when non-test
  rules depend on `cc_test` rules. No effect if `--trim_test_configuration` is
  false.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_unsupported_and_brittle_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incremental_dexing" type="boolean" default="true">
  Does most of the work for dexing separately for each Jar file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]objc_use_dotd_pruning" type="boolean" default="true">
  If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]process_headers_in_dependencies" type="boolean" default="false">
  When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]trim_test_configuration" type="boolean" default="true">
  When enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--toolchain_resolution_debug" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-.*">
  Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be  separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_default_to_explicit_init_py" type="boolean" default="false">
  This flag changes the default behavior so that **init**.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--[no]cache_test_results" type="boolean" default="auto">
  Short form: `-t`

  If set to `auto`, Bazel reruns a test if and only if:

  - Bazel detects changes in the test or its dependencies,
  - The test is marked as `external`,
  - Multiple test runs were requested with `--runs_per_test`, or
  - The test previously failed.
  If set to `yes`, Bazel caches all test results except for tests marked as
  `external`. If set to `no`, Bazel does not cache any test results.
</ParamField>

<ParamField path="--[no]experimental_cancel_concurrent_tests" type="boolean" default="never">
  If `on_failed` or `on_passed`, then Blaze will cancel concurrently running tests on the first
  successful run with that result. This is only useful in combination with
  `--runs_per_test_detects_flakes`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_fetch_all_coverage_outputs" type="boolean" default="false">
  If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_generate_llvm_lcov" type="boolean" default="false">
  If true, coverage for clang will generate an LCOV report.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_java_classpath" type="off, javabuilder, bazel or bazel_no_fallback" default="bazel">
  Enables reduced classpaths for Java compilations.
</ParamField>

<ParamField path="--[no]experimental_run_android_lint_on_java_rules" type="boolean" default="false">
  Whether to validate java_* sources.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]explicit_java_test_deps" type="boolean" default="false">
  Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner's deps. Only works for bazel right now.
</ParamField>

<ParamField path="--host_java_launcher" type="a build target label" default="see description">
  The Java launcher used by tools that are executed during a build.
</ParamField>

<ParamField path="--host_javacopt" type="a string">
  Additional options to pass to javac when building tools that are executed during a build.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--host_jvmopt" type="a string">
  Additional options to pass to the Java VM when building tools that are executed during  the build. These options will get added to the VM startup options of each  java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]incompatible_check_sharding_support" type="boolean" default="true">
  If true, Bazel will fail a sharded test if the test runner does not indicate that it
  supports sharding by touching the file at the path in `TEST_SHARD_STATUS_FILE`.
  If false, a test runner that does not support sharding will lead to all tests
  running in each shard.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_exclusive_test_sandboxed" type="boolean" default="true">
  If true, exclusive tests will run with sandboxed strategy. Add `local` tag to force
  an exclusive test run locally

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strict_action_env" type="boolean" default="true">
  If true, Bazel uses an environment with a static value for PATH and does not
  inherit `LD_LIBRARY_PATH`. Use `--action_env=ENV_VARIABLE` if you want to
  inherit specific environment variables from the client, but note that doing so
  can prevent cross-user caching if a shared cache is used.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--j2objc_translation_flags" type="comma-separated list of options">
  Additional options to pass to the J2ObjC tool.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--java_debug" type="void">
  Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.

  Expands to:
  - `--test_arg=--wrapper_script_flag=--debug`
  - `--test_output=streamed`
  - `--test_strategy=exclusive`
  - `--test_timeout=9999`
  - `--nocache_test_results`
</ParamField>

<ParamField path="--[no]java_deps" type="boolean" default="true">
  Generate dependency information (for now, compile-time classpath) per Java target.
</ParamField>

<ParamField path="--[no]java_header_compilation" type="boolean" default="true">
  Compile ijars directly from source.
</ParamField>

<ParamField path="--java_language_version" type="a string">
  The Java language version
</ParamField>

<ParamField path="--java_launcher" type="a build target label" default="see description">
  The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.
</ParamField>

<ParamField path="--java_runtime_version" type="a string" default="local_jdk">
  The Java runtime version
</ParamField>

<ParamField path="--javacopt" type="a string">
  Additional options to pass to javac.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--jvmopt" type="a string">
  Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--legacy_main_dex_list_generator" type="a build target label" default="see description">
  Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</ParamField>

<ParamField path="--optimizing_dexer" type="a build target label" default="see description">
  Specifies a binary to use to do dexing without sharding.
</ParamField>

<ParamField path="--plugin" type="a build target label">
  Plugins to use in the build. Currently works with java_plugin.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--proguard_top" type="a build target label" default="see description">
  Specifies which version of ProGuard to use for code removal when building a Java binary.
</ParamField>

<ParamField path="--proto_compiler" type="a build target label" default="@bazel_tools//tools/proto:protoc">
  The label of the proto-compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]proto_profile" type="boolean" default="true">
  Whether to pass profile_path to the proto compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_profile_path" type="a build target label" default="see description">
  The profile to pass to the proto compiler as profile_path. If unset, but  --proto_profile is true (the default), infers the path from --fdo_optimize.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_cc" type="a build target label" default="@bazel_tools//tools/proto:cc_toolchain">
  Label of proto_lang_toolchain() which describes how to compile C++ protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_j2objc" type="a build target label" default="@bazel_tools//tools/j2objc:j2objc_proto_toolchain">
  Label of proto_lang_toolchain() which describes how to compile j2objc protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_java" type="a build target label" default="@bazel_tools//tools/proto:java_toolchain">
  Label of proto_lang_toolchain() which describes how to compile Java protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_javalite" type="a build target label" default="@bazel_tools//tools/proto:javalite_toolchain">
  Label of proto_lang_toolchain() which describes how to compile JavaLite protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--protocopt" type="a string">
  Additional options to pass to the protobuf compiler.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]runs_per_test_detects_flakes" type="boolean" default="false">
  If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</ParamField>

<ParamField path="--shell_executable" type="a path" default="see description">
  Absolute path to the shell executable for Bazel to use. If this is unset, but the
  `BAZEL_SH` environment variable is set on the first Bazel invocation (that starts
  up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
  default path depending on the operating system it runs on;

  - Windows: `c:/msys64/usr/bin/bash.exe`
  - FreeBSD: `/usr/local/bin/bash`
  - All others: `/bin/bash`.

  Note that using a shell that is not compatible with `bash` may lead
  to build failures or runtime failures of the generated binaries.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--test_arg" type="a string">
  Specifies additional options and arguments that should be passed to the test
  executable. Can be used multiple times to specify several arguments.
  If multiple tests are executed, each of them will receive identical arguments.
  Used only by the `bazel test` command.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_filter" type="a string" default="see description">
  Specifies a filter to forward to the test framework.  Used to limit the tests run. Note that this does not affect which targets are built.
</ParamField>

<ParamField path="--test_result_expiration" type="an integer" default="-1">
  This option is deprecated and has no effect.
</ParamField>

<ParamField path="--[no]test_runner_fail_fast" type="boolean" default="false">
  Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</ParamField>

<ParamField path="--test_sharding_strategy" type="explicit, disabled or forced=k where k is the number of shards to enforce" default="explicit">
  Specify strategy for test sharding:

  - `explicit` to only use sharding if the `shard_count` `BUILD` attribute is
  present.
  - `disabled` to never use test sharding.
  - `forced=k` to enforce `k` shards for testing regardless of the `shard_count` `BUILD`
  attribute.
</ParamField>

<ParamField path="--tool_java_language_version" type="a string">
  The Java language version used to execute the tools that are needed during a build
</ParamField>

<ParamField path="--tool_java_runtime_version" type="a string" default="remotejdk_11">
  The Java runtime version used to execute tools during the build
</ParamField>

<ParamField path="--[no]use_ijars" type="boolean" default="true">
  If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</ParamField>


## Canonicalize-flags Options {#canonicalize-flags}

Inherits all options from [build](#build).

Options that control the output of the command

<ParamField path="--[no]canonicalize_policy" type="boolean" default="false">
  Output the canonical policy, after expansion and filtering. To keep the output clean, the canonicalized command arguments will NOT be shown when this option is set to true. Note that the command specified by --for_command affects the filtered policy, and if none is specified, the default command is 'build'.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_include_default_values" type="boolean" default="true">
  Whether Starlark options set to their default values are included in the output.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_config_setting_private_default_visibility" type="boolean" default="false">
  If incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enforce_config_setting_visibility" type="boolean" default="true">
  If true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--for_command" type="a string" default="build">
  The command for which the options should be canonicalized.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--invocation_policy" type="a string">
  Applies an invocation policy to the options to be canonicalized.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--deleted_packages" type="comma-separated list of package names">
  A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
  Use this option when deleting a subpackage 'x/y' of an existing package 'x'.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label '//x:y/z' if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]fetch" type="boolean" default="true">
  Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
</ParamField>

<ParamField path="--package_path" type="colon-separated list of options" default="%workspace%">
  A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.
</ParamField>

<ParamField path="--[no]show_loading_progress" type="boolean" default="true">
  If enabled, causes Bazel to print "Loading package:" messages.
</ParamField>


## Clean Options {#clean}

Inherits all options from [build](#build).

Options that control the output of the command

<ParamField path="--[no]async" type="boolean" default="false">
  If true, output cleaning is asynchronous. When this command completes, it will be safe to execute new commands in the same client, even though the deletion may continue in the background.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--[no]expunge" type="boolean" default="false">
  If true, clean removes the entire working tree for this bazel instance, which includes all bazel-created temporary and build output files, and stops the bazel server if it is running.

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>

<ParamField path="--expunge_async" type="void">
  If specified, clean asynchronously removes the entire working tree for this bazel instance, which includes all bazel-created temporary and build output files, and stops the bazel server if it is running. When this command completes, it will be safe to execute new commands in the same client, even though the deletion may continue in the background.

  Expands to:
  - `--expunge`
  - `--async`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)
</ParamField>


## Config Options {#config}

## Coverage Options {#coverage}

Inherits all options from [test](#test).

## Cquery Options {#cquery}

Inherits all options from [test](#test).

Options relating to query output and semantics

<ParamField path="--aspect_deps" type="off, conservative or precise" default="conservative">
  How to resolve aspect dependencies when the output format is one of &lcub;xml,proto,record&rcub;. 'off' means no aspect dependencies are resolved, 'conservative' (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, 'precise' means that only those aspects are added that are possibly active given the rule class of the direct dependencies. Note that precise mode requires loading other packages to evaluate a single target thus making it slower than the other modes. Also note that even precise mode is not completely precise: the decision whether to compute an aspect is decided in the analysis phase, which is not run during 'bazel query'.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]consistent_labels" type="boolean" default="false">
  If enabled, every query command emits labels as if by the Starlark &lt;code&gt;str&lt;/code&gt; function applied to a &lt;code&gt;Label&lt;/code&gt; instance. This is useful for tools that need to match the output of different query commands and/or labels emitted by rules. If not enabled, output formatters are free to emit apparent repository names (relative to the main repository) instead to make the output more readable.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_explicit_aspects" type="boolean" default="false">
  aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]graph:factored" type="boolean" default="true">
  If true, then the graph will be emitted 'factored', i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--graph:node_limit" type="an integer" default="512">
  The maximum length of the label string for a graph node in the output.  Longer labels will be truncated; -1 means no truncation.  This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]implicit_deps" type="boolean" default="true">
  If enabled, implicit dependencies will be included in the dependency graph over which the query operates. An implicit dependency is one that is not explicitly specified in the BUILD file but added by bazel. For cquery, this option controls filtering resolved toolchains.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]include_aspects" type="boolean" default="true">
  aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]incompatible_package_group_includes_double_slash" type="boolean" default="true">
  If enabled, when outputting package_group's `packages` attribute, the leading `//` will not be omitted.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]infer_universe_scope" type="boolean" default="false">
  If set and --universe_scope is unset, then a value of --universe_scope will be inferred as the list of unique target patterns in the query expression. Note that the --universe_scope value inferred for a query expression that uses universe-scoped functions (e.g.`allrdeps`) may not be what you want, so you should use this option only if you know what you are doing. See https://bazel.build/reference/query#sky-query for details and examples. If --universe_scope is set, then this option's value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]line_terminator_null" type="boolean" default="false">
  Whether each format is terminated with \0 instead of newline.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]nodep_deps" type="boolean" default="true">
  If enabled, deps from "nodep" attributes will be included in the dependency graph over which the query operates. A common example of a "nodep" attribute is "visibility". Run and parse the output of `info build-language` to learn about all the "nodep" attributes in the build language.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--output" type="a string" default="label">
  The format in which the cquery results should be printed. Allowed values for cquery are: label, label_kind, textproto, transitions, proto, streamed_proto, jsonproto. If you select 'transitions', you also have to specify the --transitions=(lite|full) option.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--output_file" type="a string">
  When specified, query results will be written directly to this file, and nothing will be printed to Bazel's standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &gt; file&lt;/code&gt;.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:default_values" type="boolean" default="true">
  If true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to --output=proto

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:definition_stack" type="boolean" default="false">
  Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule's class was defined.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:flatten_selects" type="boolean" default="true">
  If enabled, configurable attributes created by select() are flattened. For list types the flattened representation is a list containing each value of the select map exactly once. Scalar types are flattened to null.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]proto:include_attribute_source_aspects" type="boolean" default="false">
  Populate the source_aspect_name proto field of each Attribute with the source aspect that the attribute came from (empty string if it did not).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:include_configurations" type="boolean" default="true">
  if enabled, proto output will include information about configurations. When disabled,cquery proto output format resembles query output format.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]proto:include_starlark_rule_env" type="boolean" default="true">
  Use the starlark environment in the value of the generated &#36;internal_attr_hash attribute. This ensures that the starlark rule definition (and its transitive imports) are part of this identifier.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:include_synthetic_attribute_hash" type="boolean" default="false">
  Whether or not to calculate and populate the &#36;internal_attr_hash attribute.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:instantiation_stack" type="boolean" default="false">
  Populate the instantiation call stack of each rule. Note that this requires the stack to be present

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:locations" type="boolean" default="true">
  Whether to output location information in proto output at all.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--proto:output_rule_attrs" type="comma-separated list of options" default="all">
  Comma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to --output=proto.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:rule_classes" type="boolean" default="false">
  Populate the rule_class_key field of each rule; and for the first rule with a given rule_class_key, also populate its rule_class_info proto field. The rule_class_key field uniquely identifies a rule class, and the rule_class_info field is a Stardoc-format rule class API definition.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:rule_inputs_and_outputs" type="boolean" default="true">
  Whether or not to populate the rule_input and rule_output fields.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--query_file" type="a string">
  If set, query will read the query from the file named here, rather than on the command line. It is an error to specify a file here as well as a command-line query.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]relative_locations" type="boolean" default="false">
  If true, the location of BUILD files in xml and proto outputs will be relative. By default, the location output is an absolute path and will not be consistent across machines. You can set this option to true to have a consistent result across machines.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--show_config_fragments" type="off, direct or transitive" default="off">
  Shows the configuration fragments required by a rule and its transitive dependencies. This can be useful for evaluating how much a configured target graph can be trimmed.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--starlark:expr" type="a string">
  A Starlark expression to format each configured target in cquery's --output=starlark mode. The configured target is bound to 'target'. If neither --starlark:expr nor --starlark:file is specified, this option will default to 'str(target.label)'. It is an error to specify both --starlark:expr and --starlark:file.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--starlark:file" type="a string">
  The name of a file that defines a Starlark function called 'format', of one argument, that is applied to each configured target to format it as a string. It is an error to specify both --starlark:expr and --starlark:file. See help for --output=starlark for additional detail.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]tool_deps" type="boolean" default="true">
  Query: If disabled, dependencies on 'exec configuration' will not be included in the dependency graph over which the query operates. An 'exec configuration' dependency edge, such as the one from any 'proto_library' rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same 'target' program.
  Cquery: If disabled, filters out all configured targets which cross an execution transition from the top-level target that discovered this configured target. That means if the top-level target is in the target configuration, only configured targets also in the target configuration will be returned. If the top-level target is in the exec configuration, only exec configured targets will be returned. This option will NOT exclude resolved toolchains.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--transitions" type="full, lite or none" default="none">
  The format in which cquery will print transition information.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--universe_scope" type="comma-separated list of options">
  A comma-separated set of target patterns (additive and subtractive). The query may be performed in the universe defined by the transitive closure of the specified targets. This option is used for the query and cquery commands.
  For cquery, the input to this option is the targets all answers are built under and so this option may affect configurations and transitions. If this option is not specified, the top-level targets are assumed to be the targets parsed from the query expression. Note: For cquery, not specifying this option may cause the build to break if targets parsed from the query expression are not buildable with top-level options.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control build execution

<ParamField path="--[no]experimental_persistent_aar_extractor" type="boolean" default="false">
  Enable persistent aar extractor by using workers.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_split_coverage_postprocessing" type="boolean" default="false">
  If true, then Bazel will run coverage postprocessing for test in a new spawn.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--persistent_android_dex_desugar" type="void">
  Enable persistent Android dex and desugar actions by using workers.

  Expands to:
  - `--internal_persistent_android_dex_desugar`
  - `--strategy=Desugar=worker`
  - `--strategy=DexBuilder=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_android_resource_processor" type="void">
  Enable persistent Android resource processor by using workers.

  Expands to:
  - `--internal_persistent_busybox_tools`
  - `--strategy=AaptPackage=worker`
  - `--strategy=AndroidResourceParser=worker`
  - `--strategy=AndroidResourceValidator=worker`
  - `--strategy=AndroidResourceCompiler=worker`
  - `--strategy=RClassGenerator=worker`
  - `--strategy=AndroidResourceLink=worker`
  - `--strategy=AndroidAapt2=worker`
  - `--strategy=AndroidAssetMerger=worker`
  - `--strategy=AndroidResourceMerger=worker`
  - `--strategy=AndroidCompiledResourceMerger=worker`
  - `--strategy=ManifestMerger=worker`
  - `--strategy=AndroidManifestMerger=worker`
  - `--strategy=Aapt2Optimize=worker`
  - `--strategy=AARGenerator=worker`
  - `--strategy=ProcessDatabinding=worker`
  - `--strategy=GenerateDataBindingBaseClasses=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_dex_desugar" type="void">
  Enable persistent multiplexed Android dex and desugar actions by using workers.

  Expands to:
  - `--persistent_android_dex_desugar`
  - `--internal_persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_resource_processor" type="void">
  Enable persistent multiplexed Android resource processor by using workers.

  Expands to:
  - `--persistent_android_resource_processor`
  - `--modify_execution_info=AaptPackage=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers`
  - `--modify_execution_info=RClassGenerator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAapt2=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=ManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers`
  - `--modify_execution_info=AARGenerator=+supports-multiplex-workers`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_tools" type="void">
  Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

  Expands to:
  - `--internal_persistent_multiplex_busybox_tools`
  - `--persistent_multiplex_android_resource_processor`
  - `--persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--android_compiler" type="a string" default="see description">
  The Android target compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_manifest_merger" type="legacy, android or force_android" default="android">
  Selects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_platforms" type="a build target label">
  Sets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--cc_output_directory_tag" type="a string">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compiler" type="a string" default="see description">
  The C++ compiler to use for compiling the target.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--coverage_output_generator" type="a build target label" default="@bazel_tools//tools/test:lcov_merger">
  Location of the binary that is used to postprocess raw coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:lcov_merger`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_report_generator" type="a build target label" default="@bazel_tools//tools/test:coverage_report_generator">
  Location of the binary that is used to generate coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:coverage_report_generator`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_support" type="a build target label" default="@bazel_tools//tools/test:coverage_support">
  Location of support files that are required on the inputs of every test action
  that collects code coverage. Defaults to `//tools/test:coverage_support`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--custom_malloc" type="a build target label" default="see description">
  Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_include_xcode_execution_requirements" type="boolean" default="false">
  If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action.  If the Xcode version has a hyphenated label,  also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_prefer_mutual_xcode" type="boolean" default="true">
  If true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--extra_execution_platforms" type="comma-separated list of options">
  The platforms that are available as execution platforms to run actions.
  Platforms can be specified by exact target, or as a target pattern.
  These platforms will be considered before those declared in the `WORKSPACE` file by
  `register_execution_platforms()`. This option may only be set once; later
  instances will override earlier flag settings.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--extra_toolchains" type="comma-separated list of options">
  The toolchain rules to be considered during toolchain resolution.
  Toolchains can be specified by exact target, or as a target pattern.
  These toolchains will be considered before those declared in the `WORKSPACE` file
  by `register_toolchains()`.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--grte_top" type="a label" default="see description">
  A label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_compiler" type="a string" default="see description">
  No-op flag. Will be removed in a future release.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--host_grte_top" type="a label" default="see description">
  If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_platform" type="a build target label" default="@bazel_tools//tools:host_platform">
  The label of a platform rule that describes the host system.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_builtin_objc_strip_action" type="boolean" default="true">
  Whether to emit a strip action as part of objc linking.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_dont_enable_host_nonhost_crosstool_features" type="boolean" default="true">
  If true, Bazel will not enable 'host' and 'nonhost' features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enable_apple_toolchain_resolution" type="boolean" default="false">
  Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_remove_legacy_whole_archive" type="boolean" default="true">
  If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strip_executable_safely" type="boolean" default="false">
  If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]interface_shared_objects" type="boolean" default="true">
  Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--macos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--minimum_os_version" type="a string" default="see description">
  The minimum OS version which your compilation targets.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_mappings" type="a main workspace-relative path">
  The location of a mapping file that describes which platform to use if none is set or
  which flags to set when a platform already exists. Must be relative to the main
  workspace root. Defaults to `platform_mappings` (a file directly under the
  workspace root).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--platforms" type="a build target label">
  The labels of the platform rules describing the target platforms for the current command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_path" type="a string" default="see description">
  The absolute path of the Python interpreter invoked to run Python targets on the
  target platform. Deprecated; disabled by `--incompatible_use_python_toolchains`.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]use_platforms_in_apple_crosstool_transition" type="boolean" default="false">
  Makes apple_crosstool_transition fall back to using the value of `--platforms` flag instead of legacy `--cpu` when needed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version" type="a string" default="see description">
  If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version_config" type="a build target label" default="@bazel_tools//tools/cpp:host_xcodes">
  The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]apple_generate_dsym" type="boolean" default="false">
  Whether to generate debug symbol(.dSYM) file(s).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_test_dwp" type="boolean" default="false">
  If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cc_proto_library_header_suffixes" type="comma-separated set of options" default=".pb.h">
  Sets the suffixes of header files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--cc_proto_library_source_suffixes" type="comma-separated set of options" default=".pb.cc">
  Sets the suffixes of source files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]experimental_proto_descriptor_sets_include_source_info" type="boolean" default="false">
  Run extra actions for alternative Java api versions in a proto_library.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_save_feature_state" type="boolean" default="false">
  Save the state of enabled and requested feautres as an output of compilation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fission" type="a set of compilation modes" default="no">
  Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes'  to enable all modes and 'no' to disable all modes.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]objc_generate_linkmap" type="boolean" default="false">
  Specifies whether to generate a linkmap file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]save_temps" type="boolean" default="false">
  If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]android_databinding_use_androidx" type="boolean" default="true">
  Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]android_databinding_use_v3_4_args" type="boolean" default="true">
  Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--android_dynamic_mode" type="off, default or fully" default="off">
  Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--android_manifest_merger_order" type="alphabetical, alphabetical_by_configuration or dependency" default="alphabetical">
  Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library's manifest coming before the manifests of its dependencies.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--catalyst_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple Catalyst binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--conlyopt" type="a string">
  Additional option to pass to gcc when compiling C source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--copt" type="a string">
  Additional options to pass to gcc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_absolute_path" type="a string" default="see description">
  Use CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_instrument" type="a string" default="see description">
  Generate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_profile" type="a build target label" default="see description">
  The cs_fdo_profile representing the context sensitive profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cxxopt" type="a string">
  Additional option to pass to gcc when compiling C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--dynamic_mode" type="off, default or fully" default="default">
  Determines whether C++ binaries will be linked dynamically.  'default' means Bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_propeller_optimize_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for propeller optimize will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_remaining_fdo_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for FDO will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_compress_java_resources" type="boolean" default="false">
  Compress Java resources in APKs

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_databinding_v2" type="boolean" default="true">
  Use android databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_rewrite_dexes_with_rex" type="boolean" default="false">
  use rex tool to rewrite dex files

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_objc_fastbuild_options" type="comma-separated list of options" default="-O0,-DDEBUG=1">
  Uses these strings as objc fastbuild compiler options.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]experimental_omitfp" type="boolean" default="false">
  If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_py_binaries_include_label" type="boolean" default="false">
  py_binary targets include their label even when stamping is disabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_llvm_covmap" type="boolean" default="false">
  If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fdo_instrument" type="a string" default="see description">
  Generate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_optimize" type="a string" default="see description">
  Use FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g. `//foo/bar:file.afdo` - you may need to add an `exports_files` directive to the corresponding package) and labels pointing to `fdo_profile` targets. This flag will be superseded by the `fdo_profile` rule.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_prefetch_hints" type="a build target label" default="see description">
  Use cache prefetch hints.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_profile" type="a build target label" default="see description">
  The fdo_profile representing the profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]force_pic" type="boolean" default="false">
  If enabled, all C++ compilations produce position-independent code ("-fPIC"), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables ("-pie").

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_conlyopt" type="a string">
  Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_copt" type="a string">
  Additional options to pass to the C compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cxxopt" type="a string">
  Additional options to pass to C++ compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_linkopt" type="a string">
  Additional option to pass to linker when linking tools in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for host targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--host_per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--ios_multi_cpus" type="comma-separated list of options">
  Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]legacy_whole_archive" type="boolean" default="true" deprecated>
  Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)
</ParamField>

<ParamField path="--linkopt" type="a string">
  Additional option to pass to gcc when linking.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltobackendopt" type="a string">
  Additional option to pass to the LTO backend step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltoindexopt" type="a string">
  Additional option to pass to the LTO indexing step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--macos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple macOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--memprof_profile" type="a build target label" default="see description">
  Use memprof profile.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]objc_debug_with_GLIBCXX" type="boolean" default="false">
  If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]objc_enable_binary_stripping" type="boolean" default="false">
  Whether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and --compilation_mode=opt are specified.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--objccopt" type="a string">
  Additional options to pass to gcc when compiling Objective-C/C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--per_file_ltobackendopt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to LTO backend (under --features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--propeller_optimize" type="a build target label" default="see description">
  Use Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile.  This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize(    name = "propeller_profile",    cc_profile = "propeller_cc_profile.txt",    ld_profile = "propeller_ld_profile.txt",)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: --propeller_optimize=//a/b:propeller_profile

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_cc_profile" type="a string" default="see description">
  Absolute path name of cc_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_ld_profile" type="a string" default="see description">
  Absolute path name of ld_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]share_native_deps" type="boolean" default="true">
  If true, native libraries that contain identical functionality will be shared among different targets

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--strip" type="always, sometimes or never" default="sometimes">
  Specifies whether to strip binaries and shared libraries  (using "-Wl,--strip-debug").  The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--stripopt" type="a string">
  Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple tvOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--tvos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--visionos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple visionOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple watchOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xbinary_fdo" type="a build target label" default="see description">
  Use XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with --fdo_instrument/--fdo_optimize/--fdo_profile, those options will always prevail as if xbinary_fdo is never specified.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]desugar_for_android" type="boolean" default="true">
  Whether to desugar Java 8 bytecode before dexing.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]desugar_java8_libs" type="boolean" default="false">
  Whether to include supported Java 8 libraries in apps for legacy devices.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_check_desugar_deps" type="boolean" default="true">
  Whether to double-check correct desugaring at Android binary level.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_one_version_enforcement" type="off, warning or error" default="OFF">
  When enabled, enforce that a java_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_strict_java_deps" type="off, warn, error, strict or default" default="default">
  If true, checks that a Java target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_android_rules" type="boolean" default="false">
  If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_apple_binary_rule" type="boolean" default="false">
  No-op. Kept here for backwards compatibility.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]one_version_enforcement_on_java_tests" type="boolean" default="true">
  When enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_native_rules_allowlist" type="a build target label" default="see description">
  An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--strict_proto_deps" type="off, warn, error, strict or default" default="error">
  Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--strict_public_imports" type="off, warn, error, strict or default" default="off">
  Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_system_includes" type="boolean" default="false">
  If true, headers found through system include paths (-isystem) are also required to be declared.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Options that affect the signing outputs of a build

<ParamField path="--apk_signing_method" type="v1, v2, v1_v2 or v4" default="v1_v2">
  Implementation to use to sign APKs

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]device_debug_entitlements" type="boolean" default="true">
  If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--ios_signing_cert_name" type="a string" default="see description">
  Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_disallow_sdk_frameworks_attributes" type="boolean" default="false">
  If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_objc_alwayslink_by_default" type="boolean" default="false">
  If true, make the default value true for alwayslink attributes in objc_library and objc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_python_disallow_native_rules" type="boolean" default="false">
  When true, an error occurs when using the builtin py_* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]break_build_on_parallel_dex2oat_failure" type="boolean" default="false">
  If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--default_test_resources" type="a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100">
  Override the default resources amount for tests. The expected format is
  `{resource}={value}`. If a single positive number is specified as `{value}`
  it will override the default resources for all test sizes. If 4
  comma-separated numbers are specified, they will override the resource
  amount for respectively the `small`, `medium`, `large`, `enormous` test sizes.
  Values can also be `HOST_RAM`/`HOST_CPU`, optionally followed
  by `[-|*]{float}` (eg. `memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4`).
  The default test resources specified by this flag are overridden by explicit
  resources specified in tags.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]experimental_android_use_parallel_dex2oat" type="boolean" default="false">
  Use dex2oat in parallel to possibly speed up android_test.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]ios_memleaks" type="boolean" default="false">
  Enable checking for memory leaks in ios_test targets.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--ios_simulator_device" type="a string" default="see description">
  The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--ios_simulator_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--runs_per_test" type="a positive integer or test_regex@runs. This flag may be passed more than once">
  Specifies number of times to run each test. If any of those attempts fail for any
  reason, the whole test is considered failed. Normally the value specified is
  just an integer.
  Example: `--runs_per_test=3` will run all tests 3 times.
  Alternate syntax: `regex_filter@runs_per_test`. Where `runs_per_test` stands for
  an integer value and `regex_filter` stands for a list of include and exclude
  regular expression patterns (Also see --instrumentation_filter).
  Example: `--runs_per_test=//foo/.*,-//foo/bar/.*@3` runs all tests in `//foo/` except
  those under `//foo/bar` three times. This option can be passed multiple times. The most
  recently passed argument that matches takes precedence. If nothing matches,
  the test is only run once.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies additional environment variables to be injected into the test runner
  environment. Variables can be either specified by `name`, in which
  case its value will be read from the Bazel client environment, or by the
  `name=value` pair.
  Previously set variables can be unset via `=name`.
  This option can be used multiple times to specify several variables.
  Used only by the 'bazel test' command.

  *May be used multiple times; values are accumulated.*

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--test_timeout" type="a single integer or comma-separated list of 4 integers" default="-1">
  Override the default test timeout values for test timeouts (in secs). If a single
  positive integer value is specified it will override all categories.  If 4
  comma-separated integers are specified, they will override the timeouts for
  `short`, `moderate`, `long` and `eternal` (in that order). In either form, a value of
  -1 tells blaze to use its default timeouts for that category.
</ParamField>

<ParamField path="--[no]zip_undeclared_test_outputs" type="boolean" default="false">
  If true, undeclared test outputs will be archived in a zip file.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--[no]cc_dotd_files" type="boolean" default="true">
  Whether to generate and analyze .d files.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]cc_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_filter_library_jar_with_program_jar" type="boolean" default="false">
  Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_dotd_files" type="boolean" default="true">
  If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_jdeps_files" type="boolean" default="true">
  If enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_retain_test_configuration_across_testonly" type="boolean" default="true">
  When enabled, `--trim_test_configuration` will not trim the test configuration for rules
  marked testonly=1. This is meant to reduce action conflict issues when non-test
  rules depend on `cc_test` rules. No effect if `--trim_test_configuration` is
  false.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_unsupported_and_brittle_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incremental_dexing" type="boolean" default="true">
  Does most of the work for dexing separately for each Jar file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]objc_use_dotd_pruning" type="boolean" default="true">
  If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]process_headers_in_dependencies" type="boolean" default="false">
  When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]trim_test_configuration" type="boolean" default="true">
  When enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--toolchain_resolution_debug" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-.*">
  Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be  separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_default_to_explicit_init_py" type="boolean" default="false">
  This flag changes the default behavior so that **init**.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--[no]cache_test_results" type="boolean" default="auto">
  Short form: `-t`

  If set to `auto`, Bazel reruns a test if and only if:

  - Bazel detects changes in the test or its dependencies,
  - The test is marked as `external`,
  - Multiple test runs were requested with `--runs_per_test`, or
  - The test previously failed.
  If set to `yes`, Bazel caches all test results except for tests marked as
  `external`. If set to `no`, Bazel does not cache any test results.
</ParamField>

<ParamField path="--[no]experimental_cancel_concurrent_tests" type="boolean" default="never">
  If `on_failed` or `on_passed`, then Blaze will cancel concurrently running tests on the first
  successful run with that result. This is only useful in combination with
  `--runs_per_test_detects_flakes`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_fetch_all_coverage_outputs" type="boolean" default="false">
  If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_generate_llvm_lcov" type="boolean" default="false">
  If true, coverage for clang will generate an LCOV report.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_java_classpath" type="off, javabuilder, bazel or bazel_no_fallback" default="bazel">
  Enables reduced classpaths for Java compilations.
</ParamField>

<ParamField path="--[no]experimental_run_android_lint_on_java_rules" type="boolean" default="false">
  Whether to validate java_* sources.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]explicit_java_test_deps" type="boolean" default="false">
  Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner's deps. Only works for bazel right now.
</ParamField>

<ParamField path="--host_java_launcher" type="a build target label" default="see description">
  The Java launcher used by tools that are executed during a build.
</ParamField>

<ParamField path="--host_javacopt" type="a string">
  Additional options to pass to javac when building tools that are executed during a build.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--host_jvmopt" type="a string">
  Additional options to pass to the Java VM when building tools that are executed during  the build. These options will get added to the VM startup options of each  java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]incompatible_check_sharding_support" type="boolean" default="true">
  If true, Bazel will fail a sharded test if the test runner does not indicate that it
  supports sharding by touching the file at the path in `TEST_SHARD_STATUS_FILE`.
  If false, a test runner that does not support sharding will lead to all tests
  running in each shard.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_exclusive_test_sandboxed" type="boolean" default="true">
  If true, exclusive tests will run with sandboxed strategy. Add `local` tag to force
  an exclusive test run locally

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strict_action_env" type="boolean" default="true">
  If true, Bazel uses an environment with a static value for PATH and does not
  inherit `LD_LIBRARY_PATH`. Use `--action_env=ENV_VARIABLE` if you want to
  inherit specific environment variables from the client, but note that doing so
  can prevent cross-user caching if a shared cache is used.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--j2objc_translation_flags" type="comma-separated list of options">
  Additional options to pass to the J2ObjC tool.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--java_debug" type="void">
  Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.

  Expands to:
  - `--test_arg=--wrapper_script_flag=--debug`
  - `--test_output=streamed`
  - `--test_strategy=exclusive`
  - `--test_timeout=9999`
  - `--nocache_test_results`
</ParamField>

<ParamField path="--[no]java_deps" type="boolean" default="true">
  Generate dependency information (for now, compile-time classpath) per Java target.
</ParamField>

<ParamField path="--[no]java_header_compilation" type="boolean" default="true">
  Compile ijars directly from source.
</ParamField>

<ParamField path="--java_language_version" type="a string">
  The Java language version
</ParamField>

<ParamField path="--java_launcher" type="a build target label" default="see description">
  The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.
</ParamField>

<ParamField path="--java_runtime_version" type="a string" default="local_jdk">
  The Java runtime version
</ParamField>

<ParamField path="--javacopt" type="a string">
  Additional options to pass to javac.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--jvmopt" type="a string">
  Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--legacy_main_dex_list_generator" type="a build target label" default="see description">
  Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</ParamField>

<ParamField path="--optimizing_dexer" type="a build target label" default="see description">
  Specifies a binary to use to do dexing without sharding.
</ParamField>

<ParamField path="--plugin" type="a build target label">
  Plugins to use in the build. Currently works with java_plugin.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--proguard_top" type="a build target label" default="see description">
  Specifies which version of ProGuard to use for code removal when building a Java binary.
</ParamField>

<ParamField path="--proto_compiler" type="a build target label" default="@bazel_tools//tools/proto:protoc">
  The label of the proto-compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]proto_profile" type="boolean" default="true">
  Whether to pass profile_path to the proto compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_profile_path" type="a build target label" default="see description">
  The profile to pass to the proto compiler as profile_path. If unset, but  --proto_profile is true (the default), infers the path from --fdo_optimize.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_cc" type="a build target label" default="@bazel_tools//tools/proto:cc_toolchain">
  Label of proto_lang_toolchain() which describes how to compile C++ protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_j2objc" type="a build target label" default="@bazel_tools//tools/j2objc:j2objc_proto_toolchain">
  Label of proto_lang_toolchain() which describes how to compile j2objc protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_java" type="a build target label" default="@bazel_tools//tools/proto:java_toolchain">
  Label of proto_lang_toolchain() which describes how to compile Java protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_javalite" type="a build target label" default="@bazel_tools//tools/proto:javalite_toolchain">
  Label of proto_lang_toolchain() which describes how to compile JavaLite protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--protocopt" type="a string">
  Additional options to pass to the protobuf compiler.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]runs_per_test_detects_flakes" type="boolean" default="false">
  If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</ParamField>

<ParamField path="--shell_executable" type="a path" default="see description">
  Absolute path to the shell executable for Bazel to use. If this is unset, but the
  `BAZEL_SH` environment variable is set on the first Bazel invocation (that starts
  up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
  default path depending on the operating system it runs on;

  - Windows: `c:/msys64/usr/bin/bash.exe`
  - FreeBSD: `/usr/local/bin/bash`
  - All others: `/bin/bash`.

  Note that using a shell that is not compatible with `bash` may lead
  to build failures or runtime failures of the generated binaries.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--test_arg" type="a string">
  Specifies additional options and arguments that should be passed to the test
  executable. Can be used multiple times to specify several arguments.
  If multiple tests are executed, each of them will receive identical arguments.
  Used only by the `bazel test` command.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_filter" type="a string" default="see description">
  Specifies a filter to forward to the test framework.  Used to limit the tests run. Note that this does not affect which targets are built.
</ParamField>

<ParamField path="--test_result_expiration" type="an integer" default="-1">
  This option is deprecated and has no effect.
</ParamField>

<ParamField path="--[no]test_runner_fail_fast" type="boolean" default="false">
  Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</ParamField>

<ParamField path="--test_sharding_strategy" type="explicit, disabled or forced=k where k is the number of shards to enforce" default="explicit">
  Specify strategy for test sharding:

  - `explicit` to only use sharding if the `shard_count` `BUILD` attribute is
  present.
  - `disabled` to never use test sharding.
  - `forced=k` to enforce `k` shards for testing regardless of the `shard_count` `BUILD`
  attribute.
</ParamField>

<ParamField path="--tool_java_language_version" type="a string">
  The Java language version used to execute the tools that are needed during a build
</ParamField>

<ParamField path="--tool_java_runtime_version" type="a string" default="remotejdk_11">
  The Java runtime version used to execute tools during the build
</ParamField>

<ParamField path="--[no]use_ijars" type="boolean" default="true">
  If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</ParamField>


## Dump Options {#dump}

Options that control the output of the command

<ParamField path="--[no]action_cache" type="boolean" default="false">
  Dump action cache content.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--memory" type="memory mode" default="see description">
  Dump the memory use of the given Skyframe node.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]packages" type="boolean" default="false">
  Dump package cache content.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]rule_classes" type="boolean" default="false">
  Dump rule classes.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--[no]rules" type="boolean" default="false">
  Dump rules, including counts and memory usage (if memory is tracked).

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--skyframe" type="off, summary, count, value, deps, rdeps, function_graph, active_directories or active_directories_frontier_deps" default="off">
  Dump the Skyframe graph.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--skykey_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default=".*">
  Regex filter of SkyKey names to output. Only used with --skyframe=deps, rdeps, function_graph.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>

<ParamField path="--skylark_memory" type="a string" default="see description">
  Dumps a pprof-compatible memory profile to the specified path. To learn more please see https://github.com/google/pprof.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>


## Fetch Options {#fetch}

Inherits all options from [test](#test).

Options that control build execution

<ParamField path="--[no]all" type="boolean" default="false">
  Fetches all external repositories necessary for building any target or repository.
  This is the default if no other flags and arguments are provided. Only works
  when `--enable_bzlmod` is on.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]keep_going" type="boolean" default="false">
  Short form: `-k`

  Continue as much as possible after an error.  While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--loading_phase_threads" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_config_setting_private_default_visibility" type="boolean" default="false">
  If incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enforce_config_setting_visibility" type="boolean" default="true">
  If true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options relating to Bzlmod output and semantics

<ParamField path="--[no]configure" type="boolean" default="false">
  Only fetches repositories marked as `configure` for system-configuration purpose. Only
  works when `--enable_bzlmod` is on.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]force" type="boolean" default="false">
  Ignore existing repository if any and force fetch the repository again. Only works when
  `--enable_bzlmod` is on.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--repo" type="a string">
  Only fetches the specified repository, which can be either `@apparent_repo_name` or
  `@@canonical_repo_name`. Only works when `--enable_bzlmod` is on.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--deleted_packages" type="comma-separated list of package names">
  A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
  Use this option when deleting a subpackage 'x/y' of an existing package 'x'.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label '//x:y/z' if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]fetch" type="boolean" default="true">
  Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
</ParamField>

<ParamField path="--package_path" type="colon-separated list of options" default="%workspace%">
  A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.
</ParamField>

<ParamField path="--[no]show_loading_progress" type="boolean" default="true">
  If enabled, causes Bazel to print "Loading package:" messages.
</ParamField>


Options that control build execution

<ParamField path="--[no]experimental_persistent_aar_extractor" type="boolean" default="false">
  Enable persistent aar extractor by using workers.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_split_coverage_postprocessing" type="boolean" default="false">
  If true, then Bazel will run coverage postprocessing for test in a new spawn.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--persistent_android_dex_desugar" type="void">
  Enable persistent Android dex and desugar actions by using workers.

  Expands to:
  - `--internal_persistent_android_dex_desugar`
  - `--strategy=Desugar=worker`
  - `--strategy=DexBuilder=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_android_resource_processor" type="void">
  Enable persistent Android resource processor by using workers.

  Expands to:
  - `--internal_persistent_busybox_tools`
  - `--strategy=AaptPackage=worker`
  - `--strategy=AndroidResourceParser=worker`
  - `--strategy=AndroidResourceValidator=worker`
  - `--strategy=AndroidResourceCompiler=worker`
  - `--strategy=RClassGenerator=worker`
  - `--strategy=AndroidResourceLink=worker`
  - `--strategy=AndroidAapt2=worker`
  - `--strategy=AndroidAssetMerger=worker`
  - `--strategy=AndroidResourceMerger=worker`
  - `--strategy=AndroidCompiledResourceMerger=worker`
  - `--strategy=ManifestMerger=worker`
  - `--strategy=AndroidManifestMerger=worker`
  - `--strategy=Aapt2Optimize=worker`
  - `--strategy=AARGenerator=worker`
  - `--strategy=ProcessDatabinding=worker`
  - `--strategy=GenerateDataBindingBaseClasses=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_dex_desugar" type="void">
  Enable persistent multiplexed Android dex and desugar actions by using workers.

  Expands to:
  - `--persistent_android_dex_desugar`
  - `--internal_persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_resource_processor" type="void">
  Enable persistent multiplexed Android resource processor by using workers.

  Expands to:
  - `--persistent_android_resource_processor`
  - `--modify_execution_info=AaptPackage=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers`
  - `--modify_execution_info=RClassGenerator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAapt2=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=ManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers`
  - `--modify_execution_info=AARGenerator=+supports-multiplex-workers`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_tools" type="void">
  Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

  Expands to:
  - `--internal_persistent_multiplex_busybox_tools`
  - `--persistent_multiplex_android_resource_processor`
  - `--persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--android_compiler" type="a string" default="see description">
  The Android target compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_manifest_merger" type="legacy, android or force_android" default="android">
  Selects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_platforms" type="a build target label">
  Sets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--cc_output_directory_tag" type="a string">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compiler" type="a string" default="see description">
  The C++ compiler to use for compiling the target.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--coverage_output_generator" type="a build target label" default="@bazel_tools//tools/test:lcov_merger">
  Location of the binary that is used to postprocess raw coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:lcov_merger`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_report_generator" type="a build target label" default="@bazel_tools//tools/test:coverage_report_generator">
  Location of the binary that is used to generate coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:coverage_report_generator`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_support" type="a build target label" default="@bazel_tools//tools/test:coverage_support">
  Location of support files that are required on the inputs of every test action
  that collects code coverage. Defaults to `//tools/test:coverage_support`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--custom_malloc" type="a build target label" default="see description">
  Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_include_xcode_execution_requirements" type="boolean" default="false">
  If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action.  If the Xcode version has a hyphenated label,  also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_prefer_mutual_xcode" type="boolean" default="true">
  If true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--extra_execution_platforms" type="comma-separated list of options">
  The platforms that are available as execution platforms to run actions.
  Platforms can be specified by exact target, or as a target pattern.
  These platforms will be considered before those declared in the `WORKSPACE` file by
  `register_execution_platforms()`. This option may only be set once; later
  instances will override earlier flag settings.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--extra_toolchains" type="comma-separated list of options">
  The toolchain rules to be considered during toolchain resolution.
  Toolchains can be specified by exact target, or as a target pattern.
  These toolchains will be considered before those declared in the `WORKSPACE` file
  by `register_toolchains()`.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--grte_top" type="a label" default="see description">
  A label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_compiler" type="a string" default="see description">
  No-op flag. Will be removed in a future release.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--host_grte_top" type="a label" default="see description">
  If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_platform" type="a build target label" default="@bazel_tools//tools:host_platform">
  The label of a platform rule that describes the host system.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_builtin_objc_strip_action" type="boolean" default="true">
  Whether to emit a strip action as part of objc linking.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_dont_enable_host_nonhost_crosstool_features" type="boolean" default="true">
  If true, Bazel will not enable 'host' and 'nonhost' features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enable_apple_toolchain_resolution" type="boolean" default="false">
  Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_remove_legacy_whole_archive" type="boolean" default="true">
  If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strip_executable_safely" type="boolean" default="false">
  If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]interface_shared_objects" type="boolean" default="true">
  Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--macos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--minimum_os_version" type="a string" default="see description">
  The minimum OS version which your compilation targets.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_mappings" type="a main workspace-relative path">
  The location of a mapping file that describes which platform to use if none is set or
  which flags to set when a platform already exists. Must be relative to the main
  workspace root. Defaults to `platform_mappings` (a file directly under the
  workspace root).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--platforms" type="a build target label">
  The labels of the platform rules describing the target platforms for the current command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_path" type="a string" default="see description">
  The absolute path of the Python interpreter invoked to run Python targets on the
  target platform. Deprecated; disabled by `--incompatible_use_python_toolchains`.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]use_platforms_in_apple_crosstool_transition" type="boolean" default="false">
  Makes apple_crosstool_transition fall back to using the value of `--platforms` flag instead of legacy `--cpu` when needed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version" type="a string" default="see description">
  If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version_config" type="a build target label" default="@bazel_tools//tools/cpp:host_xcodes">
  The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]apple_generate_dsym" type="boolean" default="false">
  Whether to generate debug symbol(.dSYM) file(s).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_test_dwp" type="boolean" default="false">
  If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cc_proto_library_header_suffixes" type="comma-separated set of options" default=".pb.h">
  Sets the suffixes of header files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--cc_proto_library_source_suffixes" type="comma-separated set of options" default=".pb.cc">
  Sets the suffixes of source files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]experimental_proto_descriptor_sets_include_source_info" type="boolean" default="false">
  Run extra actions for alternative Java api versions in a proto_library.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_save_feature_state" type="boolean" default="false">
  Save the state of enabled and requested feautres as an output of compilation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fission" type="a set of compilation modes" default="no">
  Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes'  to enable all modes and 'no' to disable all modes.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]objc_generate_linkmap" type="boolean" default="false">
  Specifies whether to generate a linkmap file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]save_temps" type="boolean" default="false">
  If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]android_databinding_use_androidx" type="boolean" default="true">
  Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]android_databinding_use_v3_4_args" type="boolean" default="true">
  Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--android_dynamic_mode" type="off, default or fully" default="off">
  Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--android_manifest_merger_order" type="alphabetical, alphabetical_by_configuration or dependency" default="alphabetical">
  Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library's manifest coming before the manifests of its dependencies.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--catalyst_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple Catalyst binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--conlyopt" type="a string">
  Additional option to pass to gcc when compiling C source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--copt" type="a string">
  Additional options to pass to gcc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_absolute_path" type="a string" default="see description">
  Use CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_instrument" type="a string" default="see description">
  Generate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_profile" type="a build target label" default="see description">
  The cs_fdo_profile representing the context sensitive profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cxxopt" type="a string">
  Additional option to pass to gcc when compiling C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--dynamic_mode" type="off, default or fully" default="default">
  Determines whether C++ binaries will be linked dynamically.  'default' means Bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_propeller_optimize_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for propeller optimize will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_remaining_fdo_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for FDO will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_compress_java_resources" type="boolean" default="false">
  Compress Java resources in APKs

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_databinding_v2" type="boolean" default="true">
  Use android databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_rewrite_dexes_with_rex" type="boolean" default="false">
  use rex tool to rewrite dex files

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_objc_fastbuild_options" type="comma-separated list of options" default="-O0,-DDEBUG=1">
  Uses these strings as objc fastbuild compiler options.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]experimental_omitfp" type="boolean" default="false">
  If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_py_binaries_include_label" type="boolean" default="false">
  py_binary targets include their label even when stamping is disabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_llvm_covmap" type="boolean" default="false">
  If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fdo_instrument" type="a string" default="see description">
  Generate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_optimize" type="a string" default="see description">
  Use FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g. `//foo/bar:file.afdo` - you may need to add an `exports_files` directive to the corresponding package) and labels pointing to `fdo_profile` targets. This flag will be superseded by the `fdo_profile` rule.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_prefetch_hints" type="a build target label" default="see description">
  Use cache prefetch hints.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_profile" type="a build target label" default="see description">
  The fdo_profile representing the profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]force_pic" type="boolean" default="false">
  If enabled, all C++ compilations produce position-independent code ("-fPIC"), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables ("-pie").

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_conlyopt" type="a string">
  Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_copt" type="a string">
  Additional options to pass to the C compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cxxopt" type="a string">
  Additional options to pass to C++ compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_linkopt" type="a string">
  Additional option to pass to linker when linking tools in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for host targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--host_per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--ios_multi_cpus" type="comma-separated list of options">
  Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]legacy_whole_archive" type="boolean" default="true" deprecated>
  Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)
</ParamField>

<ParamField path="--linkopt" type="a string">
  Additional option to pass to gcc when linking.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltobackendopt" type="a string">
  Additional option to pass to the LTO backend step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltoindexopt" type="a string">
  Additional option to pass to the LTO indexing step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--macos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple macOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--memprof_profile" type="a build target label" default="see description">
  Use memprof profile.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]objc_debug_with_GLIBCXX" type="boolean" default="false">
  If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]objc_enable_binary_stripping" type="boolean" default="false">
  Whether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and --compilation_mode=opt are specified.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--objccopt" type="a string">
  Additional options to pass to gcc when compiling Objective-C/C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--per_file_ltobackendopt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to LTO backend (under --features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--propeller_optimize" type="a build target label" default="see description">
  Use Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile.  This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize(    name = "propeller_profile",    cc_profile = "propeller_cc_profile.txt",    ld_profile = "propeller_ld_profile.txt",)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: --propeller_optimize=//a/b:propeller_profile

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_cc_profile" type="a string" default="see description">
  Absolute path name of cc_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_ld_profile" type="a string" default="see description">
  Absolute path name of ld_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]share_native_deps" type="boolean" default="true">
  If true, native libraries that contain identical functionality will be shared among different targets

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--strip" type="always, sometimes or never" default="sometimes">
  Specifies whether to strip binaries and shared libraries  (using "-Wl,--strip-debug").  The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--stripopt" type="a string">
  Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple tvOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--tvos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--visionos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple visionOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple watchOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xbinary_fdo" type="a build target label" default="see description">
  Use XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with --fdo_instrument/--fdo_optimize/--fdo_profile, those options will always prevail as if xbinary_fdo is never specified.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]desugar_for_android" type="boolean" default="true">
  Whether to desugar Java 8 bytecode before dexing.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]desugar_java8_libs" type="boolean" default="false">
  Whether to include supported Java 8 libraries in apps for legacy devices.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_check_desugar_deps" type="boolean" default="true">
  Whether to double-check correct desugaring at Android binary level.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_one_version_enforcement" type="off, warning or error" default="OFF">
  When enabled, enforce that a java_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_strict_java_deps" type="off, warn, error, strict or default" default="default">
  If true, checks that a Java target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_android_rules" type="boolean" default="false">
  If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_apple_binary_rule" type="boolean" default="false">
  No-op. Kept here for backwards compatibility.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]one_version_enforcement_on_java_tests" type="boolean" default="true">
  When enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_native_rules_allowlist" type="a build target label" default="see description">
  An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--strict_proto_deps" type="off, warn, error, strict or default" default="error">
  Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--strict_public_imports" type="off, warn, error, strict or default" default="off">
  Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_system_includes" type="boolean" default="false">
  If true, headers found through system include paths (-isystem) are also required to be declared.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Options that affect the signing outputs of a build

<ParamField path="--apk_signing_method" type="v1, v2, v1_v2 or v4" default="v1_v2">
  Implementation to use to sign APKs

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]device_debug_entitlements" type="boolean" default="true">
  If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--ios_signing_cert_name" type="a string" default="see description">
  Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_disallow_sdk_frameworks_attributes" type="boolean" default="false">
  If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_objc_alwayslink_by_default" type="boolean" default="false">
  If true, make the default value true for alwayslink attributes in objc_library and objc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_python_disallow_native_rules" type="boolean" default="false">
  When true, an error occurs when using the builtin py_* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]break_build_on_parallel_dex2oat_failure" type="boolean" default="false">
  If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--default_test_resources" type="a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100">
  Override the default resources amount for tests. The expected format is
  `{resource}={value}`. If a single positive number is specified as `{value}`
  it will override the default resources for all test sizes. If 4
  comma-separated numbers are specified, they will override the resource
  amount for respectively the `small`, `medium`, `large`, `enormous` test sizes.
  Values can also be `HOST_RAM`/`HOST_CPU`, optionally followed
  by `[-|*]{float}` (eg. `memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4`).
  The default test resources specified by this flag are overridden by explicit
  resources specified in tags.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]experimental_android_use_parallel_dex2oat" type="boolean" default="false">
  Use dex2oat in parallel to possibly speed up android_test.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]ios_memleaks" type="boolean" default="false">
  Enable checking for memory leaks in ios_test targets.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--ios_simulator_device" type="a string" default="see description">
  The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--ios_simulator_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--runs_per_test" type="a positive integer or test_regex@runs. This flag may be passed more than once">
  Specifies number of times to run each test. If any of those attempts fail for any
  reason, the whole test is considered failed. Normally the value specified is
  just an integer.
  Example: `--runs_per_test=3` will run all tests 3 times.
  Alternate syntax: `regex_filter@runs_per_test`. Where `runs_per_test` stands for
  an integer value and `regex_filter` stands for a list of include and exclude
  regular expression patterns (Also see --instrumentation_filter).
  Example: `--runs_per_test=//foo/.*,-//foo/bar/.*@3` runs all tests in `//foo/` except
  those under `//foo/bar` three times. This option can be passed multiple times. The most
  recently passed argument that matches takes precedence. If nothing matches,
  the test is only run once.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies additional environment variables to be injected into the test runner
  environment. Variables can be either specified by `name`, in which
  case its value will be read from the Bazel client environment, or by the
  `name=value` pair.
  Previously set variables can be unset via `=name`.
  This option can be used multiple times to specify several variables.
  Used only by the 'bazel test' command.

  *May be used multiple times; values are accumulated.*

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--test_timeout" type="a single integer or comma-separated list of 4 integers" default="-1">
  Override the default test timeout values for test timeouts (in secs). If a single
  positive integer value is specified it will override all categories.  If 4
  comma-separated integers are specified, they will override the timeouts for
  `short`, `moderate`, `long` and `eternal` (in that order). In either form, a value of
  -1 tells blaze to use its default timeouts for that category.
</ParamField>

<ParamField path="--[no]zip_undeclared_test_outputs" type="boolean" default="false">
  If true, undeclared test outputs will be archived in a zip file.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--[no]cc_dotd_files" type="boolean" default="true">
  Whether to generate and analyze .d files.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]cc_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_filter_library_jar_with_program_jar" type="boolean" default="false">
  Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_dotd_files" type="boolean" default="true">
  If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_jdeps_files" type="boolean" default="true">
  If enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_retain_test_configuration_across_testonly" type="boolean" default="true">
  When enabled, `--trim_test_configuration` will not trim the test configuration for rules
  marked testonly=1. This is meant to reduce action conflict issues when non-test
  rules depend on `cc_test` rules. No effect if `--trim_test_configuration` is
  false.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_unsupported_and_brittle_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incremental_dexing" type="boolean" default="true">
  Does most of the work for dexing separately for each Jar file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]objc_use_dotd_pruning" type="boolean" default="true">
  If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]process_headers_in_dependencies" type="boolean" default="false">
  When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]trim_test_configuration" type="boolean" default="true">
  When enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--toolchain_resolution_debug" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-.*">
  Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be  separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_default_to_explicit_init_py" type="boolean" default="false">
  This flag changes the default behavior so that **init**.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--[no]cache_test_results" type="boolean" default="auto">
  Short form: `-t`

  If set to `auto`, Bazel reruns a test if and only if:

  - Bazel detects changes in the test or its dependencies,
  - The test is marked as `external`,
  - Multiple test runs were requested with `--runs_per_test`, or
  - The test previously failed.
  If set to `yes`, Bazel caches all test results except for tests marked as
  `external`. If set to `no`, Bazel does not cache any test results.
</ParamField>

<ParamField path="--[no]experimental_cancel_concurrent_tests" type="boolean" default="never">
  If `on_failed` or `on_passed`, then Blaze will cancel concurrently running tests on the first
  successful run with that result. This is only useful in combination with
  `--runs_per_test_detects_flakes`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_fetch_all_coverage_outputs" type="boolean" default="false">
  If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_generate_llvm_lcov" type="boolean" default="false">
  If true, coverage for clang will generate an LCOV report.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_java_classpath" type="off, javabuilder, bazel or bazel_no_fallback" default="bazel">
  Enables reduced classpaths for Java compilations.
</ParamField>

<ParamField path="--[no]experimental_run_android_lint_on_java_rules" type="boolean" default="false">
  Whether to validate java_* sources.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]explicit_java_test_deps" type="boolean" default="false">
  Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner's deps. Only works for bazel right now.
</ParamField>

<ParamField path="--host_java_launcher" type="a build target label" default="see description">
  The Java launcher used by tools that are executed during a build.
</ParamField>

<ParamField path="--host_javacopt" type="a string">
  Additional options to pass to javac when building tools that are executed during a build.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--host_jvmopt" type="a string">
  Additional options to pass to the Java VM when building tools that are executed during  the build. These options will get added to the VM startup options of each  java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]incompatible_check_sharding_support" type="boolean" default="true">
  If true, Bazel will fail a sharded test if the test runner does not indicate that it
  supports sharding by touching the file at the path in `TEST_SHARD_STATUS_FILE`.
  If false, a test runner that does not support sharding will lead to all tests
  running in each shard.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_exclusive_test_sandboxed" type="boolean" default="true">
  If true, exclusive tests will run with sandboxed strategy. Add `local` tag to force
  an exclusive test run locally

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strict_action_env" type="boolean" default="true">
  If true, Bazel uses an environment with a static value for PATH and does not
  inherit `LD_LIBRARY_PATH`. Use `--action_env=ENV_VARIABLE` if you want to
  inherit specific environment variables from the client, but note that doing so
  can prevent cross-user caching if a shared cache is used.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--j2objc_translation_flags" type="comma-separated list of options">
  Additional options to pass to the J2ObjC tool.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--java_debug" type="void">
  Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.

  Expands to:
  - `--test_arg=--wrapper_script_flag=--debug`
  - `--test_output=streamed`
  - `--test_strategy=exclusive`
  - `--test_timeout=9999`
  - `--nocache_test_results`
</ParamField>

<ParamField path="--[no]java_deps" type="boolean" default="true">
  Generate dependency information (for now, compile-time classpath) per Java target.
</ParamField>

<ParamField path="--[no]java_header_compilation" type="boolean" default="true">
  Compile ijars directly from source.
</ParamField>

<ParamField path="--java_language_version" type="a string">
  The Java language version
</ParamField>

<ParamField path="--java_launcher" type="a build target label" default="see description">
  The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.
</ParamField>

<ParamField path="--java_runtime_version" type="a string" default="local_jdk">
  The Java runtime version
</ParamField>

<ParamField path="--javacopt" type="a string">
  Additional options to pass to javac.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--jvmopt" type="a string">
  Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--legacy_main_dex_list_generator" type="a build target label" default="see description">
  Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</ParamField>

<ParamField path="--optimizing_dexer" type="a build target label" default="see description">
  Specifies a binary to use to do dexing without sharding.
</ParamField>

<ParamField path="--plugin" type="a build target label">
  Plugins to use in the build. Currently works with java_plugin.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--proguard_top" type="a build target label" default="see description">
  Specifies which version of ProGuard to use for code removal when building a Java binary.
</ParamField>

<ParamField path="--proto_compiler" type="a build target label" default="@bazel_tools//tools/proto:protoc">
  The label of the proto-compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]proto_profile" type="boolean" default="true">
  Whether to pass profile_path to the proto compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_profile_path" type="a build target label" default="see description">
  The profile to pass to the proto compiler as profile_path. If unset, but  --proto_profile is true (the default), infers the path from --fdo_optimize.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_cc" type="a build target label" default="@bazel_tools//tools/proto:cc_toolchain">
  Label of proto_lang_toolchain() which describes how to compile C++ protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_j2objc" type="a build target label" default="@bazel_tools//tools/j2objc:j2objc_proto_toolchain">
  Label of proto_lang_toolchain() which describes how to compile j2objc protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_java" type="a build target label" default="@bazel_tools//tools/proto:java_toolchain">
  Label of proto_lang_toolchain() which describes how to compile Java protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_javalite" type="a build target label" default="@bazel_tools//tools/proto:javalite_toolchain">
  Label of proto_lang_toolchain() which describes how to compile JavaLite protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--protocopt" type="a string">
  Additional options to pass to the protobuf compiler.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]runs_per_test_detects_flakes" type="boolean" default="false">
  If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</ParamField>

<ParamField path="--shell_executable" type="a path" default="see description">
  Absolute path to the shell executable for Bazel to use. If this is unset, but the
  `BAZEL_SH` environment variable is set on the first Bazel invocation (that starts
  up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
  default path depending on the operating system it runs on;

  - Windows: `c:/msys64/usr/bin/bash.exe`
  - FreeBSD: `/usr/local/bin/bash`
  - All others: `/bin/bash`.

  Note that using a shell that is not compatible with `bash` may lead
  to build failures or runtime failures of the generated binaries.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--test_arg" type="a string">
  Specifies additional options and arguments that should be passed to the test
  executable. Can be used multiple times to specify several arguments.
  If multiple tests are executed, each of them will receive identical arguments.
  Used only by the `bazel test` command.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_filter" type="a string" default="see description">
  Specifies a filter to forward to the test framework.  Used to limit the tests run. Note that this does not affect which targets are built.
</ParamField>

<ParamField path="--test_result_expiration" type="an integer" default="-1">
  This option is deprecated and has no effect.
</ParamField>

<ParamField path="--[no]test_runner_fail_fast" type="boolean" default="false">
  Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</ParamField>

<ParamField path="--test_sharding_strategy" type="explicit, disabled or forced=k where k is the number of shards to enforce" default="explicit">
  Specify strategy for test sharding:

  - `explicit` to only use sharding if the `shard_count` `BUILD` attribute is
  present.
  - `disabled` to never use test sharding.
  - `forced=k` to enforce `k` shards for testing regardless of the `shard_count` `BUILD`
  attribute.
</ParamField>

<ParamField path="--tool_java_language_version" type="a string">
  The Java language version used to execute the tools that are needed during a build
</ParamField>

<ParamField path="--tool_java_runtime_version" type="a string" default="remotejdk_11">
  The Java runtime version used to execute tools during the build
</ParamField>

<ParamField path="--[no]use_ijars" type="boolean" default="true">
  If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</ParamField>


## Help Options {#help}

Options that affect the verbosity, format or location of logging

<ParamField path="--help_verbosity" type="long, medium or short" default="medium">
  Select the verbosity of the help command.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--long" type="void">
  Short form: `-l`

  Show full description of each option, instead of just its name.

  Expands to:
  - `--help_verbosity=long`

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--short" type="void">
  Show only the names of the options, not their types or meanings.

  Expands to:
  - `--help_verbosity=short`

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


## Info Options {#info}

Inherits all options from [build](#build).

Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--info_output_type" type="stdout or response_proto" default="stdout">
  If stdout, results are directly printed to the console. If response_proto, the info command results are packed in response extensions.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--[no]show_make_env" type="boolean" default="false">
  Include the "Make" environment in the output.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


## License Options {#license}

## Mobile-install Options {#mobile-install}

Inherits all options from [build](#build).

Options that control build execution

<ParamField path="--mode" type="classic, classic_internal_test_do_not_use or skylark" default="skylark">
  Deprecated no-effect flag. Only skylark mode is still supported.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--adb" type="a string">
  adb binary to use for the 'mobile-install' command. If unspecified, the one in the Android SDK specified by the --android_sdk_channel command line option (or  the default SDK if --android_sdk_channel is not specified) is used.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]incremental" type="boolean" default="false">
  Whether to do an incremental install. If true, try to avoid unnecessary additional work by reading the state of the device the code is to be installed on and using that information to avoid unnecessary work. If false (the default), always do a full install.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]split_apks" type="boolean" default="false">
  Whether to use split apks to install and update the application on the device. Works only with devices with Marshmallow or later

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--adb_arg" type="a string">
  Extra arguments to pass to adb. Usually used to designate a device to install to.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--debug_app" type="void">
  Whether to wait for the debugger before starting the app.

  Expands to:
  - `--start=DEBUG`

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--device" type="a string">
  The adb device serial number. If not specified, the first device will be used.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--start" type="no, cold, warm or debug" default="NO">
  How the app should be started after installing it. Set to WARM to preserve and restore application state on incremental installs.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--start_app" type="void">
  Whether to start the app after installing it.

  Expands to:
  - `--start=COLD`

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--incremental_install_verbosity" type="a string">
  The verbosity for incremental install. Set to 1 for debug logging.

  Tags: [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)
</ParamField>


## Mod Options {#mod}

Options that control build execution

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--loading_phase_threads" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_config_setting_private_default_visibility" type="boolean" default="false">
  If incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enforce_config_setting_visibility" type="boolean" default="true">
  If true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options relating to the output and semantics of the `mod` subcommand

<ParamField path="--[no]all_repos" type="boolean" default="false">
  For `mod show_repo`: display all repos in the entire workspace.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]all_visible_repos" type="boolean" default="false">
  For `mod show_repo`: display all repos visible to the chosen base module, under their apparent names.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--base_module" type="&quot;&lt;root&gt;&quot; for the root module; &lt;module&gt;@&lt;version&gt; for a specific version of a module; &lt;module&gt; for all versions of a module; @&lt;name&gt; for a repo with the given apparent name; or @@&lt;name&gt; for a repo with the given canonical name" default="&lt;root&gt;">
  Specify a module relative to which the specified target repos will be interpreted.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--charset" type="utf8 or ascii" default="utf8">
  Chooses the character set to use for the tree. Only affects text output. Valid values
  are `utf8` or `ascii`. Default is `utf8`

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]cycles" type="boolean" default="true">
  Points out dependency cycles inside the displayed tree.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--depth" type="an integer" default="-1">
  Maximum display depth of the dependency tree. A depth of 1 displays the direct
  dependencies, for example. For `tree`, `path` and `all_paths` it defaults to
  `Integer.MAX_VALUE`, while for `deps` and `explain` it defaults to 1 (only displays
  direct deps of the root besides the target leaves and their parents).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--extension_filter" type="a comma-separated list of &lt;extension&gt;s" default="see description">
  Only display the usages of these module extensions and the repos generated by them if their respective flags are set. If set, the result graph will only include paths that contain modules using the specified extensions. An empty list disables the filter, effectively specifying all possible extensions.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--extension_info" type="hidden, usages, repos or all" default="hidden">
  Specify how much detail about extension usages to include in the query result.

  - `hidden` will not show any extension information.
  - `usages` will only show the extensions names.
  - `repos` will also include repos imported with `use_repo`.
  - `all` will also show the other repositories generated by extensions.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--extension_usages" type="a comma-separated list of &lt;module&gt;s">
  Specify modules whose extension usages will be displayed in the show_extension query.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--from" type="a comma-separated list of &lt;module&gt;s" default="&lt;root&gt;">
  The module(s) starting from which the dependency graph query will be displayed. Check
  each query’s description for the exact semantics. Defaults to `<root>`.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_builtin" type="boolean" default="false">
  Include built-in modules in the dependency graph. Disabled by default because it is quite noisy.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]include_unused" type="boolean" default="false">
  The queries will also take into account and display the unused modules, which are not
  present in the module resolution graph after selection (due to the
  Minimal-Version Selection or override rules). This can have different effects for
  each of the query types i.e. include new paths in the `all_paths` command, or extra
  dependants in the `explain` command.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--output" type="text, json, graph, streamed_proto or streamed_jsonproto" default="text">
  The format in which the query results should be printed. Allowed values for query are:
  `text`, `json`, `graph`.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose" type="boolean" default="false">
  The queries will also display the reason why modules were resolved to their current version (if changed). Defaults to true only for the explain query.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--deleted_packages" type="comma-separated list of package names">
  A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
  Use this option when deleting a subpackage 'x/y' of an existing package 'x'.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label '//x:y/z' if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]fetch" type="boolean" default="true">
  Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
</ParamField>

<ParamField path="--package_path" type="colon-separated list of options" default="%workspace%">
  A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.
</ParamField>

<ParamField path="--[no]show_loading_progress" type="boolean" default="true">
  If enabled, causes Bazel to print "Loading package:" messages.
</ParamField>


## Print_action Options {#print_action}

Inherits all options from [build](#build).

Miscellaneous options, not otherwise categorized.

<ParamField path="--print_action_mnemonics" type="a string">
  Lists which mnemonics to filter print_action data by, no filtering takes place when left empty.

  *May be used multiple times; values are accumulated.*
</ParamField>


## Query Options {#query}

Options that control build execution

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]keep_going" type="boolean" default="false">
  Short form: `-k`

  Continue as much as possible after an error.  While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--loading_phase_threads" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_config_setting_private_default_visibility" type="boolean" default="false">
  If incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enforce_config_setting_visibility" type="boolean" default="true">
  If true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options relating to query output and semantics

<ParamField path="--aspect_deps" type="off, conservative or precise" default="conservative">
  How to resolve aspect dependencies when the output format is one of &lcub;xml,proto,record&rcub;. 'off' means no aspect dependencies are resolved, 'conservative' (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, 'precise' means that only those aspects are added that are possibly active given the rule class of the direct dependencies. Note that precise mode requires loading other packages to evaluate a single target thus making it slower than the other modes. Also note that even precise mode is not completely precise: the decision whether to compute an aspect is decided in the analysis phase, which is not run during 'bazel query'.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]consistent_labels" type="boolean" default="false">
  If enabled, every query command emits labels as if by the Starlark &lt;code&gt;str&lt;/code&gt; function applied to a &lt;code&gt;Label&lt;/code&gt; instance. This is useful for tools that need to match the output of different query commands and/or labels emitted by rules. If not enabled, output formatters are free to emit apparent repository names (relative to the main repository) instead to make the output more readable.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_explicit_aspects" type="boolean" default="false">
  aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]experimental_graphless_query" type="boolean" default="auto">
  If true, uses a Query implementation that does not make a copy of the graph. The new implementation only supports --order_output=no, as well as only a subset of output formatters.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--graph:conditional_edges_limit" type="an integer" default="4">
  The maximum number of condition labels to show. -1 means no truncation and 0 means no annotation. This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]graph:factored" type="boolean" default="true">
  If true, then the graph will be emitted 'factored', i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--graph:node_limit" type="an integer" default="512">
  The maximum length of the label string for a graph node in the output.  Longer labels will be truncated; -1 means no truncation.  This option is only applicable to --output=graph.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]implicit_deps" type="boolean" default="true">
  If enabled, implicit dependencies will be included in the dependency graph over which the query operates. An implicit dependency is one that is not explicitly specified in the BUILD file but added by bazel. For cquery, this option controls filtering resolved toolchains.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]include_aspects" type="boolean" default="true">
  aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]incompatible_lexicographical_output" type="boolean" default="true">
  If this option is set, sorts --order_output=auto output in lexicographical order.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_package_group_includes_double_slash" type="boolean" default="true">
  If enabled, when outputting package_group's `packages` attribute, the leading `//` will not be omitted.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]infer_universe_scope" type="boolean" default="false">
  If set and --universe_scope is unset, then a value of --universe_scope will be inferred as the list of unique target patterns in the query expression. Note that the --universe_scope value inferred for a query expression that uses universe-scoped functions (e.g.`allrdeps`) may not be what you want, so you should use this option only if you know what you are doing. See https://bazel.build/reference/query#sky-query for details and examples. If --universe_scope is set, then this option's value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]line_terminator_null" type="boolean" default="false">
  Whether each format is terminated with \0 instead of newline.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]nodep_deps" type="boolean" default="true">
  If enabled, deps from "nodep" attributes will be included in the dependency graph over which the query operates. A common example of a "nodep" attribute is "visibility". Run and parse the output of `info build-language` to learn about all the "nodep" attributes in the build language.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--noorder_results" type="void">
  Output the results in dependency-ordered (default) or unordered fashion. The unordered output is faster but only supported when --output is not minrank, maxrank, or graph.

  Expands to:
  - `--order_output=no`

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--null" type="void">
  Whether each format is terminated with \0 instead of newline.

  Expands to:
  - `--line_terminator_null=true`

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--order_output" type="no, deps, auto or full" default="auto">
  Output the results unordered (no), dependency-ordered (deps), or fully ordered (full). The default is 'auto', meaning that results are output either dependency-ordered or fully ordered, depending on the output formatter (dependency-ordered for proto, minrank, maxrank, and graph, fully ordered for all others). When output is fully ordered, nodes are printed in a fully deterministic (total) order. First, all nodes are sorted alphabetically. Then, each node in the list is used as the start of a post-order depth-first search in which outgoing edges to unvisited nodes are traversed in alphabetical order of the successor nodes. Finally, nodes are printed in the reverse of the order in which they were visited.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--order_results" type="void">
  Output the results in dependency-ordered (default) or unordered fashion. The unordered output is faster but only supported when --output is not minrank, maxrank, or graph.

  Expands to:
  - `--order_output=auto`

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--output" type="a string" default="label">
  The format in which the query results should be printed. Allowed values for query are: build, graph, streamed_jsonproto, label, label_kind, location, maxrank, minrank, package, proto, streamed_proto, xml.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--output_file" type="a string">
  When specified, query results will be written directly to this file, and nothing will be printed to Bazel's standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &gt; file&lt;/code&gt;.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:default_values" type="boolean" default="true">
  If true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to --output=proto

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:definition_stack" type="boolean" default="false">
  Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule's class was defined.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:flatten_selects" type="boolean" default="true">
  If enabled, configurable attributes created by select() are flattened. For list types the flattened representation is a list containing each value of the select map exactly once. Scalar types are flattened to null.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]proto:include_attribute_source_aspects" type="boolean" default="false">
  Populate the source_aspect_name proto field of each Attribute with the source aspect that the attribute came from (empty string if it did not).

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:include_starlark_rule_env" type="boolean" default="true">
  Use the starlark environment in the value of the generated &#36;internal_attr_hash attribute. This ensures that the starlark rule definition (and its transitive imports) are part of this identifier.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:include_synthetic_attribute_hash" type="boolean" default="false">
  Whether or not to calculate and populate the &#36;internal_attr_hash attribute.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:instantiation_stack" type="boolean" default="false">
  Populate the instantiation call stack of each rule. Note that this requires the stack to be present

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:locations" type="boolean" default="true">
  Whether to output location information in proto output at all.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--proto:output_rule_attrs" type="comma-separated list of options" default="all">
  Comma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to --output=proto.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:rule_classes" type="boolean" default="false">
  Populate the rule_class_key field of each rule; and for the first rule with a given rule_class_key, also populate its rule_class_info proto field. The rule_class_key field uniquely identifies a rule class, and the rule_class_info field is a Stardoc-format rule class API definition.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]proto:rule_inputs_and_outputs" type="boolean" default="true">
  Whether or not to populate the rule_input and rule_output fields.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--query_file" type="a string">
  If set, query will read the query from the file named here, rather than on the command line. It is an error to specify a file here as well as a command-line query.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]relative_locations" type="boolean" default="false">
  If true, the location of BUILD files in xml and proto outputs will be relative. By default, the location output is an absolute path and will not be consistent across machines. You can set this option to true to have a consistent result across machines.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]strict_test_suite" type="boolean" default="false">
  If true, the tests() expression gives an error if it encounters a test_suite containing non-test targets.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]tool_deps" type="boolean" default="true">
  Query: If disabled, dependencies on 'exec configuration' will not be included in the dependency graph over which the query operates. An 'exec configuration' dependency edge, such as the one from any 'proto_library' rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same 'target' program.
  Cquery: If disabled, filters out all configured targets which cross an execution transition from the top-level target that discovered this configured target. That means if the top-level target is in the target configuration, only configured targets also in the target configuration will be returned. If the top-level target is in the exec configuration, only exec configured targets will be returned. This option will NOT exclude resolved toolchains.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--universe_scope" type="comma-separated list of options">
  A comma-separated set of target patterns (additive and subtractive). The query may be performed in the universe defined by the transitive closure of the specified targets. This option is used for the query and cquery commands.
  For cquery, the input to this option is the targets all answers are built under and so this option may affect configurations and transitions. If this option is not specified, the top-level targets are assumed to be the targets parsed from the query expression. Note: For cquery, not specifying this option may cause the build to break if targets parsed from the query expression are not buildable with top-level options.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]xml:default_values" type="boolean" default="false">
  If true, rule attributes whose value is not explicitly specified in the BUILD file are printed; otherwise they are omitted.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]xml:line_numbers" type="boolean" default="true">
  If true, XML output contains line numbers. Disabling this option may make diffs easier to read.  This option is only applicable to --output=xml.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--deleted_packages" type="comma-separated list of package names">
  A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
  Use this option when deleting a subpackage 'x/y' of an existing package 'x'.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label '//x:y/z' if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]fetch" type="boolean" default="true">
  Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
</ParamField>

<ParamField path="--package_path" type="colon-separated list of options" default="%workspace%">
  A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.
</ParamField>

<ParamField path="--[no]show_loading_progress" type="boolean" default="true">
  If enabled, causes Bazel to print "Loading package:" messages.
</ParamField>


## Run Options {#run}

Inherits all options from [build](#build).

Options that appear before the command and are parsed by the client

<ParamField path="--[no]portable_paths" type="boolean" default="false">
  If true, includes paths to replace in ExecRequest to make the resulting paths portable.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]run" type="boolean" default="true">
  If false, skip running the command line constructed for the built target. Note that this flag is ignored for all --script_path builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--run_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to the target to run. Variables can be either specified by name, in which case the value will be taken from the invocation environment, by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment, or by &lt;code&gt;=name&lt;/code&gt;, which unsets the variable of that name. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate. Note that the executed target will generally see the full environment of the host except for those variables that have been explicitly unset.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]run_in_cwd" type="boolean" default="false">
  If true, runs the target in the current working directory instead of the runfile tree.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--script_path" type="a path" default="see description">
  If set, write a shell script to the given file which invokes the target. If this option is set, the target is not run from bazel. Use 'bazel run --script_path=foo //foo && ./foo' to invoke target '//foo' This differs from 'bazel run //foo' in that the bazel lock is released and the executable is connected to the terminal's stdin.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--[no]omit_run_args" type="boolean" default="true">
  Specifies whether the arguments passed to the runnable target will be omitted from the output for privacy reasons. If set to true, the output will not contain the arguments passed to the target. If set to false, the output will contain the arguments passed to the target.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>


## Shutdown Options {#shutdown}

Options that control the output of the command

<ParamField path="--iff_heap_size_greater_than" type="an integer" default="0">
  Iff non-zero, then shutdown will only shut down the server if the total memory (in MB) consumed by the JVM exceeds this value.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>


## Test Options {#test}

Inherits all options from [build](#build).

Options that affect the verbosity, format or location of logging

<ParamField path="--[no]print_relative_test_log_paths" type="boolean" default="false">
  If true, when printing the path to a test log, use relative path that makes use of the 'testlogs' convenience symlink. N.B. - A subsequent 'build'/'test'/etc invocation with a different configuration can cause the target of this symlink to change, making the path printed previously no longer useful.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]test_verbose_timeout_warnings" type="boolean" default="false">
  If true, print additional warnings when the actual test execution time does not match the timeout defined by the test (whether implied or explicit).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]verbose_test_summary" type="boolean" default="true">
  If true, print additional information (timing, number of failed runs, etc) in the test summary.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


## Vendor Options {#vendor}

Inherits all options from [test](#test).

Options that control build execution

<ParamField path="--[no]keep_going" type="boolean" default="false">
  Short form: `-k`

  Continue as much as possible after an error.  While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--loading_phase_threads" type="an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;" default="auto">
  Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

  Tags: [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_config_setting_private_default_visibility" type="boolean" default="false">
  If incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enforce_config_setting_visibility" type="boolean" default="true">
  If true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options relating to Bzlmod output and semantics

<ParamField path="--repo" type="a string">
  Only vendors the specified repository, which can be either `@apparent_repo_name` or
  `@@canonical_repo_name`. This option can be set multiple times.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--deleted_packages" type="comma-separated list of package names">
  A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
  Use this option when deleting a subpackage 'x/y' of an existing package 'x'.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label '//x:y/z' if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]fetch" type="boolean" default="true">
  Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
</ParamField>

<ParamField path="--package_path" type="colon-separated list of options" default="%workspace%">
  A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.
</ParamField>

<ParamField path="--[no]show_loading_progress" type="boolean" default="true">
  If enabled, causes Bazel to print "Loading package:" messages.
</ParamField>


Options that control build execution

<ParamField path="--[no]experimental_persistent_aar_extractor" type="boolean" default="false">
  Enable persistent aar extractor by using workers.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_remotable_source_manifests" type="boolean" default="false">
  Whether to make source manifest actions remotable

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_split_coverage_postprocessing" type="boolean" default="false">
  If true, then Bazel will run coverage postprocessing for test in a new spawn.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_strict_fileset_output" type="boolean" default="false">
  If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incompatible_modify_execution_info_additive" type="boolean" default="true">
  When enabled, passing multiple `--modify_execution_info` flags is additive.
  When disabled, only the last flag is taken into account.

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--modify_execution_info" type="regex=[+-]key,regex=[+-]key,...">
  Add or remove keys from an action's execution info based on action mnemonic.
  Applies only to actions which support execution info. Many common actions
  support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
  TestRunner. When specifying multiple values, order matters because
  many regexes may apply to the same mnemonic.
  Syntax: `regex=[+-]key,regex=[+-]key,...`.
  Examples:

  - `.*=+x,.*=-y,.*=+z` adds `x` and `z` to, and removes `y` from, the execution info for all actions.
  - `Genrule=+requires-x` adds `requires-x` to the execution info for all Genrule actions.
  - `(?!Genrule).*=-requires-x` removes `requires-x` from the execution info for all non-Genrule actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--persistent_android_dex_desugar" type="void">
  Enable persistent Android dex and desugar actions by using workers.

  Expands to:
  - `--internal_persistent_android_dex_desugar`
  - `--strategy=Desugar=worker`
  - `--strategy=DexBuilder=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_android_resource_processor" type="void">
  Enable persistent Android resource processor by using workers.

  Expands to:
  - `--internal_persistent_busybox_tools`
  - `--strategy=AaptPackage=worker`
  - `--strategy=AndroidResourceParser=worker`
  - `--strategy=AndroidResourceValidator=worker`
  - `--strategy=AndroidResourceCompiler=worker`
  - `--strategy=RClassGenerator=worker`
  - `--strategy=AndroidResourceLink=worker`
  - `--strategy=AndroidAapt2=worker`
  - `--strategy=AndroidAssetMerger=worker`
  - `--strategy=AndroidResourceMerger=worker`
  - `--strategy=AndroidCompiledResourceMerger=worker`
  - `--strategy=ManifestMerger=worker`
  - `--strategy=AndroidManifestMerger=worker`
  - `--strategy=Aapt2Optimize=worker`
  - `--strategy=AARGenerator=worker`
  - `--strategy=ProcessDatabinding=worker`
  - `--strategy=GenerateDataBindingBaseClasses=worker`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_dex_desugar" type="void">
  Enable persistent multiplexed Android dex and desugar actions by using workers.

  Expands to:
  - `--persistent_android_dex_desugar`
  - `--internal_persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_resource_processor" type="void">
  Enable persistent multiplexed Android resource processor by using workers.

  Expands to:
  - `--persistent_android_resource_processor`
  - `--modify_execution_info=AaptPackage=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers`
  - `--modify_execution_info=RClassGenerator=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAapt2=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers`
  - `--modify_execution_info=ManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers`
  - `--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers`
  - `--modify_execution_info=AARGenerator=+supports-multiplex-workers`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--persistent_multiplex_android_tools" type="void">
  Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

  Expands to:
  - `--internal_persistent_multiplex_busybox_tools`
  - `--persistent_multiplex_android_resource_processor`
  - `--persistent_multiplex_android_dex_desugar`

  Tags: [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]use_target_platform_for_tests" type="boolean" default="false">
  If true, use the target platform for running tests rather than the test exec group.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>


Options that configure the toolchain used for action execution

<ParamField path="--android_compiler" type="a string" default="see description">
  The Android target compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_manifest_merger" type="legacy, android or force_android" default="android">
  Selects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--android_platforms" type="a build target label">
  Sets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--cc_output_directory_tag" type="a string">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compiler" type="a string" default="see description">
  The C++ compiler to use for compiling the target.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--coverage_output_generator" type="a build target label" default="@bazel_tools//tools/test:lcov_merger">
  Location of the binary that is used to postprocess raw coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:lcov_merger`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_report_generator" type="a build target label" default="@bazel_tools//tools/test:coverage_report_generator">
  Location of the binary that is used to generate coverage reports. This must
  be a binary target. Defaults to `@bazel_tools//tools/test:coverage_report_generator`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--coverage_support" type="a build target label" default="@bazel_tools//tools/test:coverage_support">
  Location of support files that are required on the inputs of every test action
  that collects code coverage. Defaults to `//tools/test:coverage_support`.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--custom_malloc" type="a build target label" default="see description">
  Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]experimental_include_xcode_execution_requirements" type="boolean" default="false">
  If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action.  If the Xcode version has a hyphenated label,  also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_prefer_mutual_xcode" type="boolean" default="true">
  If true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--extra_execution_platforms" type="comma-separated list of options">
  The platforms that are available as execution platforms to run actions.
  Platforms can be specified by exact target, or as a target pattern.
  These platforms will be considered before those declared in the `WORKSPACE` file by
  `register_execution_platforms()`. This option may only be set once; later
  instances will override earlier flag settings.

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--extra_toolchains" type="comma-separated list of options">
  The toolchain rules to be considered during toolchain resolution.
  Toolchains can be specified by exact target, or as a target pattern.
  These toolchains will be considered before those declared in the `WORKSPACE` file
  by `register_toolchains()`.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--grte_top" type="a label" default="see description">
  A label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_compiler" type="a string" default="see description">
  No-op flag. Will be removed in a future release.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--host_grte_top" type="a label" default="see description">
  If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_platform" type="a build target label" default="@bazel_tools//tools:host_platform">
  The label of a platform rule that describes the host system.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]incompatible_bazel_test_exec_run_under" type="boolean" default="true">
  If enabled, `bazel test --run_under=//:runner` builds `//:runner` in the exec
  configuration. If disabled, it builds `//:runner` in the target configuration.
  Bazel executes tests on exec machines, so the former is more correct. This
  doesn't affect `bazel run`, which always builds `--run_under=//foo` in the
  target configuration.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_builtin_objc_strip_action" type="boolean" default="true">
  Whether to emit a strip action as part of objc linking.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_dont_enable_host_nonhost_crosstool_features" type="boolean" default="true">
  If true, Bazel will not enable 'host' and 'nonhost' features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_enable_apple_toolchain_resolution" type="boolean" default="false">
  Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_remove_legacy_whole_archive" type="boolean" default="true">
  If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strip_executable_safely" type="boolean" default="false">
  If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]interface_shared_objects" type="boolean" default="true">
  Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--macos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--minimum_os_version" type="a string" default="see description">
  The minimum OS version which your compilation targets.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_mappings" type="a main workspace-relative path">
  The location of a mapping file that describes which platform to use if none is set or
  which flags to set when a platform already exists. Must be relative to the main
  workspace root. Defaults to `platform_mappings` (a file directly under the
  workspace root).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--platforms" type="a build target label">
  The labels of the platform rules describing the target platforms for the current command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_path" type="a string" default="see description">
  The absolute path of the Python interpreter invoked to run Python targets on the
  target platform. Deprecated; disabled by `--incompatible_use_python_toolchains`.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]use_platforms_in_apple_crosstool_transition" type="boolean" default="false">
  Makes apple_crosstool_transition fall back to using the value of `--platforms` flag instead of legacy `--cpu` when needed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_sdk_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version" type="a string" default="see description">
  If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xcode_version_config" type="a build target label" default="@bazel_tools//tools/cpp:host_xcodes">
  The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>


Options that control the output of the command

<ParamField path="--[no]apple_generate_dsym" type="boolean" default="false">
  Whether to generate debug symbol(.dSYM) file(s).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]build_runfile_links" type="boolean" default="true">
  If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_runfile_manifests" type="boolean" default="true">
  If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]build_test_dwp" type="boolean" default="false">
  If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cc_proto_library_header_suffixes" type="comma-separated set of options" default=".pb.h">
  Sets the suffixes of header files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--cc_proto_library_source_suffixes" type="comma-separated set of options" default=".pb.cc">
  Sets the suffixes of source files that a cc_proto_library creates.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]experimental_proto_descriptor_sets_include_source_info" type="boolean" default="false">
  Run extra actions for alternative Java api versions in a proto_library.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_save_feature_state" type="boolean" default="false">
  Save the state of enabled and requested feautres as an output of compilation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fission" type="a set of compilation modes" default="no">
  Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes'  to enable all modes and 'no' to disable all modes.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_always_include_files_in_data" type="boolean" default="true">
  If true, native rules add `DefaultInfo.files` of data dependencies to their runfiles,
  which matches the recommended behavior for Starlark rules ([runfiles features to avoid](https://bazel.build/versions/9.2.0/extending/rules#runfiles_features_to_avoid)).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_compact_repo_mapping_manifest" type="boolean" default="true">
  If enabled, the `{binary}.repo_mapping` file emits a module extension's repo mapping
  only once instead of once for each repo generated by the extension that
  contributes runfiles.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--incompatible_disable_select_on" type="comma-separated set of options">
  List of flags for which the use in `select()` is disabled.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_filegroup_runfiles_for_data" type="boolean" default="true">
  If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]objc_generate_linkmap" type="boolean" default="false">
  Specifies whether to generate a linkmap file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]save_temps" type="boolean" default="false">
  If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with target
  configuration. Variables can be either specified by `name`, in which case
  the value will be taken from the invocation environment, by the `name=value`
  pair which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can be used
  multiple times; for options given for the same variable, the latest wins,
  options for different variables accumulate.
  Note that unless `--incompatible_repo_env_ignores_action_env` is true, all `name=value`
  pairs will be available to repository rules.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--allowed_cpu_values" type="comma-separated set of options">
  Allowed values for the `--cpu` flag.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]android_databinding_use_androidx" type="boolean" default="true">
  Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]android_databinding_use_v3_4_args" type="boolean" default="true">
  Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--android_dynamic_mode" type="off, default or fully" default="off">
  Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--android_manifest_merger_order" type="alphabetical, alphabetical_by_configuration or dependency" default="alphabetical">
  Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library's manifest coming before the manifests of its dependencies.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--catalyst_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple Catalyst binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]collect_code_coverage" type="boolean" default="false">
  If specified, Bazel will instrument code (using offline instrumentation where
  possible) and will collect coverage information during tests. Only targets that
  match `--instrumentation_filter` will be affected. Usually this option should
  not be specified directly - `bazel coverage` command should be used instead.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--compilation_mode" type="fastbuild, dbg or opt" default="fastbuild">
  Short form: `-c`

  Specify the mode the binary will be built in. Values: `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--conlyopt" type="a string">
  Additional option to pass to gcc when compiling C source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--copt" type="a string">
  Additional options to pass to gcc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cpu" type="a string">
  Deprecated: this flag is not used internally by Blaze although there are legacy platform
  mappings to allow for backwards compatibility. Do not use this flag, instead use
  `--platforms` with an appropriate platform definition.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_absolute_path" type="a string" default="see description">
  Use CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_instrument" type="a string" default="see description">
  Generate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cs_fdo_profile" type="a build target label" default="see description">
  The cs_fdo_profile representing the context sensitive profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--cxxopt" type="a string">
  Additional option to pass to gcc when compiling C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--define" type="a 'name=value' assignment">
  Each `--define` option specifies an assignment for a build variable.
  In case of multiple values for a variable, the last one wins.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--dynamic_mode" type="off, default or fully" default="default">
  Determines whether C++ binaries will be linked dynamically.  'default' means Bazel will choose whether to link dynamically.  'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_propeller_optimize_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for propeller optimize will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_remaining_fdo_absolute_paths" type="boolean" default="true">
  If set, any use of absolute paths for FDO will raise an error.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]enable_runfiles" type="boolean" default="auto">
  Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--exec_aspects" type="comma-separated list of options">
  Comma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.

  *May be used multiple times; values are accumulated.*

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_action_listener" type="a build target label">
  Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
  existing build actions.

  *May be used multiple times; values are accumulated.*

  Tags: [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_compress_java_resources" type="boolean" default="false">
  Compress Java resources in APKs

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_databinding_v2" type="boolean" default="true">
  Use android databinding v2. This flag is a no-op.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_resource_shrinking" type="boolean" default="false">
  Enables resource shrinking for android_binary APKs that use ProGuard.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_android_rewrite_dexes_with_rex" type="boolean" default="false">
  use rex tool to rewrite dex files

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_collect_code_coverage_for_generated_files" type="boolean" default="false">
  If specified, Bazel will also generate collect coverage information for generated files.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_objc_fastbuild_options" type="comma-separated list of options" default="-O0,-DDEBUG=1">
  Uses these strings as objc fastbuild compiler options.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]experimental_omitfp" type="boolean" default="false">
  If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_output_paths" type="off or strip" default="off">
  Which model to use for where in the output tree rules write their outputs, particularly
  for multi-platform / multi-configuration builds. This is highly experimental. See
  [GH-6526](https://github.com/bazelbuild/bazel/issues/6526) for details. Starlark actions can opt into path mapping by adding the key
  `supports-path-mapping` to the `execution_requirements` dict.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--experimental_override_platform_cpu_name" type="a 'label=value' assignment">
  Each entry should be of the form `label=value` where label refers to a platform and values
  is the desired shortname to override the platform's CPU name in `$(TARGET_CPU)`
  make variable and output path. Only used when
  `--experimental_platform_in_output_dir`, `--incompatible_target_cpu_from_platform` or
  `--incompatible_bep_cpu_from_platform` is true. Has highest naming priority.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_platform_in_output_dir" type="boolean" default="Auto">
  If true, a shortname for the target platform is used in the output directory name
  instead of the CPU. The exact scheme is experimental and subject to change:

  - First, in the rare case the `--platforms` option does not have exactly one value, a
  hash of the platforms option is used.
  - Next, if any shortname for the current platform was registered by
  `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
  - Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
  shortname based off the current platform Label.
  - Finally, a hash of the platform option is used as a last resort.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_py_binaries_include_label" type="boolean" default="false">
  py_binary targets include their label even when stamping is disabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_llvm_covmap" type="boolean" default="false">
  If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_use_platforms_in_output_dir_legacy_heuristic" type="boolean" default="true">
  Please only use this flag as part of a suggested migration or testing strategy. Note
  that the heuristic has known deficiencies and it is suggested to migrate to
  relying on just `--experimental_override_name_platform_in_output_dir`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--fdo_instrument" type="a string" default="see description">
  Generate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_optimize" type="a string" default="see description">
  Use FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g. `//foo/bar:file.afdo` - you may need to add an `exports_files` directive to the corresponding package) and labels pointing to `fdo_profile` targets. This flag will be superseded by the `fdo_profile` rule.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_prefetch_hints" type="a build target label" default="see description">
  Use cache prefetch hints.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--fdo_profile" type="a build target label" default="see description">
  The fdo_profile representing the profile to be used for optimization.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--features" type="a string">
  The given features will be enabled or disabled by default for targets built in the target configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.
  See also `--host_features`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]force_pic" type="boolean" default="false">
  If enabled, all C++ compilations produce position-independent code ("-fPIC"), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables ("-pie").

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_action_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies the set of environment variables available to actions with execution
  configurations. Variables can be either specified by `name`, in which case the
  value will be taken from the invocation environment, by the `name=value` pair
  which sets the value independent of the invocation environment, or by
  `=name`, which unsets the variable of that name. This option can
  be used multiple times; for options given for the same variable, the latest
  wins, options for different variables accumulate.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_compilation_mode" type="fastbuild, dbg or opt" default="opt">
  Specify the mode the tools used during the build will be built in. Values:
  `fastbuild`, `dbg`, `opt`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--host_conlyopt" type="a string">
  Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_copt" type="a string">
  Additional options to pass to the C compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cpu" type="a string">
  The host CPU.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_cxxopt" type="a string">
  Additional options to pass to C++ compiler for tools built in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_features" type="a string">
  The given features will be enabled or disabled by default for targets built in the exec configuration.
  Specifying `-{feature}` will disable the feature. Negative features always override positive ones.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_linkopt" type="a string">
  Additional option to pass to linker when linking tools in the exec configurations.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--host_macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for host targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--host_per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]incompatible_auto_exec_groups" type="boolean" default="false">
  When enabled, an exec groups is automatically created for each toolchain used by a rule.
  For this to work rule needs to specify `toolchain` parameter on its actions. For
  more information, see [GH-17134](https://github.com/bazelbuild/bazel/issues/17134).

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_merge_genfiles_directory" type="boolean" default="true">
  If true, the genfiles directory is folded into the bin directory.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_target_cpu_from_platform" type="boolean" default="true">
  If specified, the value of the cpu constraint (`@platforms//cpu:cpu`) of
  the target platform is used to set the `$(TARGET_CPU)` make variable.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]instrument_test_targets" type="boolean" default="false">
  When coverage is enabled, specifies whether to consider instrumenting test rules.
  When set, test rules included by `--instrumentation_filter` are instrumented.
  Otherwise, test rules are always excluded from coverage instrumentation.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--instrumentation_filter" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-/javatests[/:],-/test/java[/:]">
  When coverage is enabled, only rules with names included by the
  specified regex-based filter will be instrumented. Rules prefixed
  with '-' are excluded instead. Note that only non-test rules are
  instrumented unless `--instrument_test_targets` is enabled.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ios_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--ios_multi_cpus" type="comma-separated list of options">
  Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]legacy_whole_archive" type="boolean" default="true" deprecated>
  Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)
</ParamField>

<ParamField path="--linkopt" type="a string">
  Additional option to pass to gcc when linking.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltobackendopt" type="a string">
  Additional option to pass to the LTO backend step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--ltoindexopt" type="a string">
  Additional option to pass to the LTO indexing step (under --features=thin_lto).

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--macos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple macOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--macos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--memprof_profile" type="a build target label" default="see description">
  Use memprof profile.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]objc_debug_with_GLIBCXX" type="boolean" default="false">
  If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]objc_enable_binary_stripping" type="boolean" default="false">
  Whether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and --compilation_mode=opt are specified.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--objccopt" type="a string">
  Additional options to pass to gcc when compiling Objective-C/C++ source files.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--per_file_copt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see --instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--per_file_ltobackendopt" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options">
  Additional options to selectively pass to LTO backend (under --features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,...,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: --per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--platform_suffix" type="a string" default="see description">
  Specifies a suffix to be added to the configuration directory.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--propeller_optimize" type="a build target label" default="see description">
  Use Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile.  This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize(    name = "propeller_profile",    cc_profile = "propeller_cc_profile.txt",    ld_profile = "propeller_ld_profile.txt",)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: --propeller_optimize=//a/b:propeller_profile

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_cc_profile" type="a string" default="see description">
  Absolute path name of cc_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--propeller_optimize_absolute_ld_profile" type="a string" default="see description">
  Absolute path name of ld_profile file for Propeller Optimized builds.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--run_under" type="a prefix in front of command" default="see description">
  Prefix to insert before the executables for the `test` and `run` commands.
  If the value is `foo -bar`, and the execution command line is `test_binary -baz`,
  then the final command line is `foo -bar test_binary -baz`.
  This can also be a label to an executable target. Some examples are:

  - `valgrind`
  - `strace`
  - `strace -c`
  - `valgrind --quiet --num-callers=20`
  - `//package:target`
  - `//package:target --options`

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--[no]share_native_deps" type="boolean" default="true">
  If true, native libraries that contain identical functionality will be shared among different targets

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]stamp" type="boolean" default="false">
  Stamp binaries with the date, username, hostname, workspace information, etc.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--strip" type="always, sometimes or never" default="sometimes">
  Specifies whether to strip binaries and shared libraries  (using "-Wl,--strip-debug").  The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--stripopt" type="a string">
  Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

  *May be used multiple times; values are accumulated.*

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--tvos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple tvOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--tvos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--visionos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple visionOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_cpus" type="comma-separated list of options">
  Comma-separated list of architectures for which to build Apple watchOS binaries.

  *May be used multiple times; values are accumulated.*

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--watchos_minimum_os" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

  Tags: [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--xbinary_fdo" type="a build target label" default="see description">
  Use XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with --fdo_instrument/--fdo_optimize/--fdo_profile, those options will always prevail as if xbinary_fdo is never specified.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>


Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.)

<ParamField path="--[no]check_visibility" type="boolean" default="true">
  If disabled, visibility errors in target dependencies are demoted to warnings.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]desugar_for_android" type="boolean" default="true">
  Whether to desugar Java 8 bytecode before dexing.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]desugar_java8_libs" type="boolean" default="false">
  Whether to include supported Java 8 libraries in apps for legacy devices.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]enforce_constraints" type="boolean" default="true">
  Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)
</ParamField>

<ParamField path="--[no]experimental_check_desugar_deps" type="boolean" default="true">
  Whether to double-check correct desugaring at Android binary level.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_enforce_transitive_visibility" type="boolean" default="false">
  If true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_one_version_enforcement" type="off, warning or error" default="OFF">
  When enabled, enforce that a java_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--experimental_strict_java_deps" type="off, warn, error, strict or default" default="default">
  If true, checks that a Java target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--[no]incompatible_check_testonly_for_output_files" type="boolean" default="false">
  If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_android_rules" type="boolean" default="false">
  If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_disable_native_apple_binary_rule" type="boolean" default="false">
  No-op. Kept here for backwards compatibility.

  Tags: [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]one_version_enforcement_on_java_tests" type="boolean" default="true">
  When enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--python_native_rules_allowlist" type="a build target label" default="see description">
  An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]strict_filesets" type="boolean" default="false">
  If this option is enabled, filesets crossing package boundaries are reported as errors.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--strict_proto_deps" type="off, warn, error, strict or default" default="error">
  Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--strict_public_imports" type="off, warn, error, strict or default" default="off">
  Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]strict_system_includes" type="boolean" default="false">
  If true, headers found through system include paths (-isystem) are also required to be declared.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)
</ParamField>

<ParamField path="--target_environment" type="a build target label">
  Declares this build's target environment. Must be a label reference to an
  `environment` rule. If specified, all top-level targets must be compatible with this
  environment.
  See also `--platforms`.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>


Options that affect the signing outputs of a build

<ParamField path="--apk_signing_method" type="v1, v2, v1_v2 or v4" default="v1_v2">
  Implementation to use to sign APKs

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]device_debug_entitlements" type="boolean" default="true">
  If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--ios_signing_cert_name" type="a string" default="see description">
  Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>


This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.

<ParamField path="--[no]incompatible_disallow_sdk_frameworks_attributes" type="boolean" default="false">
  If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_objc_alwayslink_by_default" type="boolean" default="false">
  If true, make the default value true for alwayslink attributes in objc_library and objc_import.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_python_disallow_native_rules" type="boolean" default="false">
  When true, an error occurs when using the builtin py_* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Options that govern the behavior of the test environment or test runner

<ParamField path="--[no]allow_analysis_failures" type="boolean" default="false">
  If true, an analysis failure of a rule target results in the target's propagation
  of an instance of `AnalysisFailureInfo` containing the error description, instead
  of resulting in a build failure.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--analysis_testing_deps_limit" type="an integer" default="2000">
  Sets the maximum number of transitive dependencies through a rule attribute with
  a `for_analysis_testing` configuration transition.
  Exceeding this limit will result in a rule error.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]break_build_on_parallel_dex2oat_failure" type="boolean" default="false">
  If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--default_test_resources" type="a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100">
  Override the default resources amount for tests. The expected format is
  `{resource}={value}`. If a single positive number is specified as `{value}`
  it will override the default resources for all test sizes. If 4
  comma-separated numbers are specified, they will override the resource
  amount for respectively the `small`, `medium`, `large`, `enormous` test sizes.
  Values can also be `HOST_RAM`/`HOST_CPU`, optionally followed
  by `[-|*]{float}` (eg. `memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4`).
  The default test resources specified by this flag are overridden by explicit
  resources specified in tags.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]experimental_android_use_parallel_dex2oat" type="boolean" default="false">
  Use dex2oat in parallel to possibly speed up android_test.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]ios_memleaks" type="boolean" default="false">
  Enable checking for memory leaks in ios_test targets.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)
</ParamField>

<ParamField path="--ios_simulator_device" type="a string" default="see description">
  The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--ios_simulator_version" type="a dotted version (for example '2.3' or '3.3alpha2.4')" default="see description">
  The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--runs_per_test" type="a positive integer or test_regex@runs. This flag may be passed more than once">
  Specifies number of times to run each test. If any of those attempts fail for any
  reason, the whole test is considered failed. Normally the value specified is
  just an integer.
  Example: `--runs_per_test=3` will run all tests 3 times.
  Alternate syntax: `regex_filter@runs_per_test`. Where `runs_per_test` stands for
  an integer value and `regex_filter` stands for a list of include and exclude
  regular expression patterns (Also see --instrumentation_filter).
  Example: `--runs_per_test=//foo/.*,-//foo/bar/.*@3` runs all tests in `//foo/` except
  those under `//foo/bar` three times. This option can be passed multiple times. The most
  recently passed argument that matches takes precedence. If nothing matches,
  the test is only run once.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_env" type="a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable">
  Specifies additional environment variables to be injected into the test runner
  environment. Variables can be either specified by `name`, in which
  case its value will be read from the Bazel client environment, or by the
  `name=value` pair.
  Previously set variables can be unset via `=name`.
  This option can be used multiple times to specify several variables.
  Used only by the 'bazel test' command.

  *May be used multiple times; values are accumulated.*

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>

<ParamField path="--test_timeout" type="a single integer or comma-separated list of 4 integers" default="-1">
  Override the default test timeout values for test timeouts (in secs). If a single
  positive integer value is specified it will override all categories.  If 4
  comma-separated integers are specified, they will override the timeouts for
  `short`, `moderate`, `long` and `eternal` (in that order). In either form, a value of
  -1 tells blaze to use its default timeouts for that category.
</ParamField>

<ParamField path="--[no]zip_undeclared_test_outputs" type="boolean" default="false">
  If true, undeclared test outputs will be archived in a zip file.

  Tags: [`test_runner`](#effect_tag_TEST_RUNNER)
</ParamField>


Options that trigger optimizations of the build time

<ParamField path="--[no]cc_dotd_files" type="boolean" default="true">
  Whether to generate and analyze .d files.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)
</ParamField>

<ParamField path="--[no]cc_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_filter_library_jar_with_program_jar" type="boolean" default="false">
  Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

  Tags: [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_dotd_files" type="boolean" default="true">
  If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_inmemory_jdeps_files" type="boolean" default="true">
  If enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_retain_test_configuration_across_testonly" type="boolean" default="true">
  When enabled, `--trim_test_configuration` will not trim the test configuration for rules
  marked testonly=1. This is meant to reduce action conflict issues when non-test
  rules depend on `cc_test` rules. No effect if `--trim_test_configuration` is
  false.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_unsupported_and_brittle_include_scanning" type="boolean" default="false">
  Whether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]incremental_dexing" type="boolean" default="true">
  Does most of the work for dexing separately for each Jar file.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>

<ParamField path="--[no]objc_use_dotd_pruning" type="boolean" default="true">
  If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]process_headers_in_dependencies" type="boolean" default="false">
  When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

  Tags: [`execution`](#effect_tag_EXECUTION)
</ParamField>

<ParamField path="--[no]trim_test_configuration" type="boolean" default="true">
  When enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)
</ParamField>


Options that affect the verbosity, format or location of logging

<ParamField path="--toolchain_resolution_debug" type="a comma-separated list of regex expressions with prefix '-' specifying excluded paths" default="-.*">
  Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be  separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.

  Tags: [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)
</ParamField>

<ParamField path="--[no]verbose_visibility_errors" type="boolean" default="false">
  If enabled, visibility errors include additional diagnostic information.

  Tags: [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>


Options specifying or altering a generic input to a Bazel command that does not fall into other categories.

<ParamField path="--flag_alias" type="a 'name=label' flag alias">
  Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
  `{key}={value}` as an argument.

  *May be used multiple times; values are accumulated.*

  Tags: [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)
</ParamField>

<ParamField path="--[no]incompatible_default_to_explicit_init_py" type="boolean" default="false">
  This flag changes the default behavior so that **init**.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>


Miscellaneous options, not otherwise categorized.

<ParamField path="--[no]cache_test_results" type="boolean" default="auto">
  Short form: `-t`

  If set to `auto`, Bazel reruns a test if and only if:

  - Bazel detects changes in the test or its dependencies,
  - The test is marked as `external`,
  - Multiple test runs were requested with `--runs_per_test`, or
  - The test previously failed.
  If set to `yes`, Bazel caches all test results except for tests marked as
  `external`. If set to `no`, Bazel does not cache any test results.
</ParamField>

<ParamField path="--[no]experimental_cancel_concurrent_tests" type="boolean" default="never">
  If `on_failed` or `on_passed`, then Blaze will cancel concurrently running tests on the first
  successful run with that result. This is only useful in combination with
  `--runs_per_test_detects_flakes`.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_fetch_all_coverage_outputs" type="boolean" default="false">
  If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]experimental_generate_llvm_lcov" type="boolean" default="false">
  If true, coverage for clang will generate an LCOV report.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--experimental_java_classpath" type="off, javabuilder, bazel or bazel_no_fallback" default="bazel">
  Enables reduced classpaths for Java compilations.
</ParamField>

<ParamField path="--[no]experimental_run_android_lint_on_java_rules" type="boolean" default="false">
  Whether to validate java_* sources.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)
</ParamField>

<ParamField path="--[no]explicit_java_test_deps" type="boolean" default="false">
  Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner's deps. Only works for bazel right now.
</ParamField>

<ParamField path="--host_java_launcher" type="a build target label" default="see description">
  The Java launcher used by tools that are executed during a build.
</ParamField>

<ParamField path="--host_javacopt" type="a string">
  Additional options to pass to javac when building tools that are executed during a build.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--host_jvmopt" type="a string">
  Additional options to pass to the Java VM when building tools that are executed during  the build. These options will get added to the VM startup options of each  java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--[no]incompatible_check_sharding_support" type="boolean" default="true">
  If true, Bazel will fail a sharded test if the test runner does not indicate that it
  supports sharding by touching the file at the path in `TEST_SHARD_STATUS_FILE`.
  If false, a test runner that does not support sharding will lead to all tests
  running in each shard.

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_exclusive_test_sandboxed" type="boolean" default="true">
  If true, exclusive tests will run with sandboxed strategy. Add `local` tag to force
  an exclusive test run locally

  Tags: [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--[no]incompatible_strict_action_env" type="boolean" default="true">
  If true, Bazel uses an environment with a static value for PATH and does not
  inherit `LD_LIBRARY_PATH`. Use `--action_env=ENV_VARIABLE` if you want to
  inherit specific environment variables from the client, but note that doing so
  can prevent cross-user caching if a shared cache is used.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)
</ParamField>

<ParamField path="--j2objc_translation_flags" type="comma-separated list of options">
  Additional options to pass to the J2ObjC tool.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--java_debug" type="void">
  Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.

  Expands to:
  - `--test_arg=--wrapper_script_flag=--debug`
  - `--test_output=streamed`
  - `--test_strategy=exclusive`
  - `--test_timeout=9999`
  - `--nocache_test_results`
</ParamField>

<ParamField path="--[no]java_deps" type="boolean" default="true">
  Generate dependency information (for now, compile-time classpath) per Java target.
</ParamField>

<ParamField path="--[no]java_header_compilation" type="boolean" default="true">
  Compile ijars directly from source.
</ParamField>

<ParamField path="--java_language_version" type="a string">
  The Java language version
</ParamField>

<ParamField path="--java_launcher" type="a build target label" default="see description">
  The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.
</ParamField>

<ParamField path="--java_runtime_version" type="a string" default="local_jdk">
  The Java runtime version
</ParamField>

<ParamField path="--javacopt" type="a string">
  Additional options to pass to javac.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--jvmopt" type="a string">
  Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--legacy_main_dex_list_generator" type="a build target label" default="see description">
  Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</ParamField>

<ParamField path="--optimizing_dexer" type="a build target label" default="see description">
  Specifies a binary to use to do dexing without sharding.
</ParamField>

<ParamField path="--plugin" type="a build target label">
  Plugins to use in the build. Currently works with java_plugin.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--proguard_top" type="a build target label" default="see description">
  Specifies which version of ProGuard to use for code removal when building a Java binary.
</ParamField>

<ParamField path="--proto_compiler" type="a build target label" default="@bazel_tools//tools/proto:protoc">
  The label of the proto-compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--[no]proto_profile" type="boolean" default="true">
  Whether to pass profile_path to the proto compiler.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_profile_path" type="a build target label" default="see description">
  The profile to pass to the proto compiler as profile_path. If unset, but  --proto_profile is true (the default), infers the path from --fdo_optimize.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_cc" type="a build target label" default="@bazel_tools//tools/proto:cc_toolchain">
  Label of proto_lang_toolchain() which describes how to compile C++ protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_j2objc" type="a build target label" default="@bazel_tools//tools/j2objc:j2objc_proto_toolchain">
  Label of proto_lang_toolchain() which describes how to compile j2objc protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_java" type="a build target label" default="@bazel_tools//tools/proto:java_toolchain">
  Label of proto_lang_toolchain() which describes how to compile Java protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--proto_toolchain_for_javalite" type="a build target label" default="@bazel_tools//tools/proto:javalite_toolchain">
  Label of proto_lang_toolchain() which describes how to compile JavaLite protos

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--protocopt" type="a string">
  Additional options to pass to the protobuf compiler.

  *May be used multiple times; values are accumulated.*

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)
</ParamField>

<ParamField path="--[no]runs_per_test_detects_flakes" type="boolean" default="false">
  If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</ParamField>

<ParamField path="--shell_executable" type="a path" default="see description">
  Absolute path to the shell executable for Bazel to use. If this is unset, but the
  `BAZEL_SH` environment variable is set on the first Bazel invocation (that starts
  up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
  default path depending on the operating system it runs on;

  - Windows: `c:/msys64/usr/bin/bash.exe`
  - FreeBSD: `/usr/local/bin/bash`
  - All others: `/bin/bash`.

  Note that using a shell that is not compatible with `bash` may lead
  to build failures or runtime failures of the generated binaries.

  Tags: [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)
</ParamField>

<ParamField path="--test_arg" type="a string">
  Specifies additional options and arguments that should be passed to the test
  executable. Can be used multiple times to specify several arguments.
  If multiple tests are executed, each of them will receive identical arguments.
  Used only by the `bazel test` command.

  *May be used multiple times; values are accumulated.*
</ParamField>

<ParamField path="--test_filter" type="a string" default="see description">
  Specifies a filter to forward to the test framework.  Used to limit the tests run. Note that this does not affect which targets are built.
</ParamField>

<ParamField path="--test_result_expiration" type="an integer" default="-1">
  This option is deprecated and has no effect.
</ParamField>

<ParamField path="--[no]test_runner_fail_fast" type="boolean" default="false">
  Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</ParamField>

<ParamField path="--test_sharding_strategy" type="explicit, disabled or forced=k where k is the number of shards to enforce" default="explicit">
  Specify strategy for test sharding:

  - `explicit` to only use sharding if the `shard_count` `BUILD` attribute is
  present.
  - `disabled` to never use test sharding.
  - `forced=k` to enforce `k` shards for testing regardless of the `shard_count` `BUILD`
  attribute.
</ParamField>

<ParamField path="--tool_java_language_version" type="a string">
  The Java language version used to execute the tools that are needed during a build
</ParamField>

<ParamField path="--tool_java_runtime_version" type="a string" default="remotejdk_11">
  The Java runtime version used to execute tools during the build
</ParamField>

<ParamField path="--[no]use_ijars" type="boolean" default="true">
  If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</ParamField>


## Version Options {#version}

Options that let the user configure the intended output, affecting its value, as opposed to its existence

<ParamField path="--[no]gnu_format" type="boolean" default="false">
  If set, write the version to stdout using the conventions described in the GNU standards.

  Tags: [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)
</ParamField>


### Option Effect Tags

| | |
| --- | --- |
| <span id="effect_tag_UNKNOWN">`unknown`</span> | This option has unknown, or undocumented, effect. |
| <span id="effect_tag_NO_OP">`no_op`</span> | This option has literally no effect. |
| <span id="effect_tag_LOSES_INCREMENTAL_STATE">`loses_incremental_state`</span> | Changing the value of this option can cause significant loss of incremental state, which slows builds. State could be lost due to a server restart or to invalidation of a large part of the dependency graph. |
| <span id="effect_tag_CHANGES_INPUTS">`changes_inputs`</span> | This option actively changes the inputs that bazel considers for the build, such as filesystem restrictions, repository versions, or other options. |
| <span id="effect_tag_AFFECTS_OUTPUTS">`affects_outputs`</span> | This option affects bazel's outputs. This tag is intentionally broad, can include transitive affects, and does not specify the type of output it affects. |
| <span id="effect_tag_BUILD_FILE_SEMANTICS">`build_file_semantics`</span> | This option affects the semantics of BUILD or .bzl files. |
| <span id="effect_tag_BAZEL_INTERNAL_CONFIGURATION">`bazel_internal_configuration`</span> | This option affects settings of bazel-internal machinery. This tag does not, on its own, mean that build artifacts are affected. |
| <span id="effect_tag_LOADING_AND_ANALYSIS">`loading_and_analysis`</span> | This option affects the loading and analysis of dependencies, and the building of the dependency graph. |
| <span id="effect_tag_EXECUTION">`execution`</span> | This option affects the execution phase, such as sandboxing or remote execution related options. |
| <span id="effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS">`host_machine_resource_optimizations`</span> | This option triggers an optimization that may be machine specific and is not guaranteed to work on all machines. The optimization could include a tradeoff with other aspects of performance, such as memory or cpu cost. |
| <span id="effect_tag_EAGERNESS_TO_EXIT">`eagerness_to_exit`</span> | This option changes how eagerly bazel will exit from a failure, where a choice between continuing despite the failure and ending the invocation exists. |
| <span id="effect_tag_BAZEL_MONITORING">`bazel_monitoring`</span> | This option is used to monitor bazel's behavior and performance. |
| <span id="effect_tag_TERMINAL_OUTPUT">`terminal_output`</span> | This option affects bazel's terminal output. |
| <span id="effect_tag_ACTION_COMMAND_LINES">`action_command_lines`</span> | This option changes the command line arguments of one or more build actions. |
| <span id="effect_tag_TEST_RUNNER">`test_runner`</span> | This option changes the testrunner environment of the build. |

### Option Metadata Tags

| | |
| --- | --- |
| <span id="metadata_tag_EXPERIMENTAL">`experimental`</span> | This option triggers an experimental feature with no guarantees of functionality. |
| <span id="metadata_tag_INCOMPATIBLE_CHANGE">`incompatible_change`</span> | This option triggers a breaking change. Use this option to test your migration readiness or get early access to the new feature |
| <span id="metadata_tag_DEPRECATED">`deprecated`</span> | This option is deprecated. It might be that the feature it affects is deprecated, or that another method of supplying the information is preferred. |
| <span id="metadata_tag_NON_CONFIGURABLE">`non_configurable`</span> | This option cannot be changed in a transition or be used in a select() statement. |
