---
title: 'Command-Line Reference'
---

```
bazel [&lt;startup options&gt;] &lt;command&gt; [&lt;args&gt;]
```

or

```
bazel [&lt;startup options&gt;] &lt;command&gt; [&lt;args&gt;] -- [&lt;target patterns&gt;]
```

See the [User's Guide](/versions/9.0.0/docs/build#specifying-build-targets) for the
target patterns syntax.

## Option Syntax

Options can be passed to Bazel in different ways. Options that require a value
can be passed with either an equals sign or a space:

```
--&lt;option&gt;=&lt;value&gt;
--&lt;option&gt; &lt;value&gt;
```

Some options have a single character short form; in that case, the short form
has to be passed with a single dash and a space.

```
-&lt;short_form&gt; &lt;value&gt;
```

Boolean options can be enabled as follows:

```
--&lt;option&gt;
--&lt;option&gt;=[true|yes|1]
```

and disabled as follows:

```
--no&lt;option&gt;
--&lt;option&gt;=[false|no|0]
```

Tristate options are usually set to automatic by default, and can be
force-enabled as follows:

```
--&lt;option&gt;=[true|yes|1]
```

or force-disabled as follows:

```
--no&lt;option&gt;
--&lt;option&gt;=[false|no|0]
```

## 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:

`--[no]autodetect_server_javabase` 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)

`--[no]batch` default: "false"
:   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)

`--[no]batch_cpu_scheduling` 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)

`--bazelrc=&lt;path&gt;` multiple uses are accumulated
:   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`.

    1. `x.rc` and `y.rc` are read.
    2. `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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]block_for_lock` 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)

`--[no]client_debug` 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)

`--connect_timeout_secs=&lt;an integer&gt;` 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)

`--digest_function=&lt;hash function&gt;` 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)

`--experimental_cgroup_parent=&lt;path&gt;` 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)

`--[no]experimental_run_in_user_cgroup` 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)

`--extra_classpath=<a string&gt;` default: ""
:   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)

`--failure_detail_out=&lt;path&gt;` 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 $&#123;OUTPUT\_BASE&#125;/failure\_detail.rawproto.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]home_rc` default: "true"
:   Whether or not to look for the home bazelrc file at `$HOME/.bazelrc`

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]idle_server_tasks` 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)

`--[no]ignore_all_rc_files` 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)

`--io_nice_level=&#123;-1,0,1,2,3,4,5,6,7&#125;` 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)

`--local_startup_timeout_secs=&lt;an integer&gt;` default: "120"
:   The maximum amount of time the client waits to connect to the server

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--macos_qos_class=<a string&gt;` 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)

`--max_idle_secs=&lt;integer&gt;` 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)

`--output_base=&lt;path&gt;` default: see description
:   If set, specifies the output location to which all build output will be written. Otherwise, the location will be $&#123;OUTPUT\_ROOT&#125;/*blaze*$&#123;USER&#125;/$&#123;MD5\_OF\_WORKSPACE\_ROOT&#125;. 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)

`--output_user_root=&lt;path&gt;` default: see description
:   The user-specific directory beneath which all build outputs are written; by default, this is a function of $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)

`--[no]preemptible` default: "false"
:   If true, the command can be preempted if another command is started.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]quiet` 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)

`--server_jvm_out=&lt;path&gt;` 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)

`--[no]shutdown_on_low_sys_mem` 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)

`--[no]system_rc` default: "true"
:   Whether or not to look for the system-wide bazelrc.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]unlimit_coredumps` 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)

`--[no]windows_enable_symlinks` 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)

`--[no]workspace_rc` default: "true"
:   Whether or not to look for the workspace bazelrc file at `$workspace/.bazelrc`

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Remote caching and execution options:

`--[no]experimental_remote_repo_contents_cache` 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)

Miscellaneous options, not otherwise categorized.:

`--host_jvm_args=&lt;jvm_arg&gt;` multiple uses are accumulated
:   Flags to pass to the JVM executing Blaze.

`--host_jvm_debug`
:   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`

`--server_javabase=&lt;jvm path&gt;` default: ""
:   Path to the JVM used to execute Bazel itself.

## Options Common to all Commands

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

`--distdir=<a path&gt;` multiple uses are accumulated
:   Additional places to search for archives before accessing the network to download them.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]experimental_repository_cache_hardlinks` 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)

`--experimental_repository_downloader_retries=&lt;an integer&gt;` default: "5"
:   The maximum number of attempts to retry a download error. If set to 0, retries are disabled.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_scale_timeouts=<a double&gt;` 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)

`--http_connector_attempts=&lt;an integer&gt;` default: "8"
:   The maximum number of attempts for http downloads.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--http_connector_retry_max_timeout=&lt;An immutable length of time.&gt;` 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)

`--http_max_parallel_downloads=&lt;an integer&gt;` default: "8"
:   The maximum number parallel http downloads.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--http_timeout_scaling=<a double&gt;` default: "1.0"
:   Scale all timeouts related to http downloads by the given factor

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache=<a path&gt;` 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 `&#123;--repository_cache&#125;/contents`
    is used. Note that this means setting `--repository_cache=` would by default disable the
    repo contents cache as well, unless `--repo_contents_cache=&#123;some_path&#125;` is also set.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache_gc_idle_delay=&lt;An immutable length of time.&gt;` 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)

`--repo_contents_cache_gc_max_age=&lt;An immutable length of time.&gt;` 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)

`--repository_cache=<a path&gt;` 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 `&#123;--output_user_root&#125;/cache/repos/v1` is used.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]repository_disable_download` default: "false"
:   If set, downloading using `ctx.download&#123;,_and_extract&#125;` 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)

Options that control build execution:

`--experimental_ui_max_stdouterr_bytes=&lt;an integer in (-1)-1073741819 range&gt;` 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)

`--gc_churning_threshold=&lt;an integer in 0-100 range&gt;` 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)

`--gc_churning_threshold_if_multiple_top_level_targets=&lt;an integer&gt;` 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)

`--gc_thrashing_threshold=&lt;an integer in 0-100 range&gt;` 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)

Options that configure the toolchain used for action execution:

`--[no]incompatible_enable_proto_toolchain_resolution` 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)

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

`--bep_maximum_open_remote_upload_files=&lt;an integer&gt;` default: "-1"
:   Maximum number of open files allowed during BEP artifact upload.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_strict_repo_env` 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)

`--[no]incompatible_repo_env_ignores_action_env` default: "true"
:   If true, <code>--action\_env=NAME=VALUE</code> 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)

`--remote_download_all`
:   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)

`--remote_download_minimal`
:   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)

`--remote_download_outputs=&lt;all, minimal or toplevel&gt;` 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)

`--remote_download_symlink_template=<a string&gt;` default: ""
:   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 &#123;hash&#125; and &#123;size\_bytes&#125; 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)

`--remote_download_toplevel`
:   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)

`--repo_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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 <code>.bazelrc</code> entries. The special syntax <code>=NAME</code> can be used to explicitly unset a variable. The string <code>%bazel\_workspace%</code> in a value will be replaced with the absolute path of the workspace as printed by <code>bazel info workspace</code>.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

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

`--[no]allow_experimental_loads` 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)

`--[no]check_bzl_visibility` default: "true"
:   If disabled, .bzl load visibility errors are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]incompatible_enforce_starlark_utf8` 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)

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

`--[no]experimental_bzl_visibility` 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)

`--[no]experimental_cc_shared_library` 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)

`--[no]experimental_disable_external_package` 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)

`--[no]experimental_dormant_deps` 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)

`--[no]experimental_enable_android_migration_apis` 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)

`--[no]experimental_enable_first_class_macros` default: "true"
:   If set to true, enables the `macro()` construct for defining symbolic macros.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_enable_scl_dialect` default: "true"
:   If set to true, .scl files may be used in load() statements.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_enable_starlark_set` 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)

`--[no]experimental_google_legacy_api` 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)

`--[no]experimental_isolated_extension_usages` default: "false"
:   If true, enables the <code>isolate</code> parameter in the <a href="https://bazel.build/versions/9.0.0/rules/lib/globals/module#use\_extension"><code>use\_extension</code></a> function.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_platforms_api` 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)

`--[no]experimental_repo_remote_exec` 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)

`--[no]experimental_repository_ctx_execute_wasm` 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)

`--[no]experimental_sibling_repository_layout` 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 $output\_base/execution\_root directory. This has the side effect of freeing up $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)

`--[no]experimental_single_package_toolchain_binding` 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)

`--[no]experimental_starlark_type_checking` 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)

`--[no]experimental_starlark_type_syntax` 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)

`--experimental_starlark_types_allowed_paths=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--[no]incompatible_allow_tags_propagation` 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)

`--[no]incompatible_always_check_depset_elements` 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)

`--incompatible_autoload_externally=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_disable_autoloads_in_main_repo` 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)

`--[no]incompatible_disable_objc_library_transition` 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)

`--[no]incompatible_disable_starlark_host_transitions` 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)

`--[no]incompatible_disable_target_default_provider_fields` 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)

`--incompatible_disable_transitions_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_disallow_ctx_resolve_tools` 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)

`--[no]incompatible_disallow_empty_glob` 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)

`--[no]incompatible_enable_deprecated_label_apis` 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)

`--[no]incompatible_fail_on_unknown_attributes` 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)

`--[no]incompatible_fix_package_group_reporoot_syntax` 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)

`--[no]incompatible_locations_prefers_executable` default: "true"
:   Whether a target that provides an executable expands to the executable rather than the files in <code>DefaultInfo.files</code> under $(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)

`--[no]incompatible_no_attr_license` 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)

`--[no]incompatible_no_implicit_file_export` 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)

`--[no]incompatible_no_implicit_watch_label` default: "true"
:   If true, then methods on <code>repository\_ctx</code> that are passed a Label will no longer automatically watch the file under that label for changes even if <code>watch = "no"</code>, and <code>repository\_ctx.path</code> no longer causes the returned path to be watched. Use <code>repository\_ctx.watch</code> instead.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_no_rule_outputs_param` 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)

`--[no]incompatible_package_group_has_public_syntax` 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)

`--[no]incompatible_resolve_select_keys_eagerly` 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)

`--[no]incompatible_run_shell_command_string` 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)

`--[no]incompatible_simplify_unconditional_selects_in_rule_attrs` 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)

`--[no]incompatible_stop_exporting_build_file_path` 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)

`--[no]incompatible_stop_exporting_language_modules` 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)

`--[no]incompatible_unambiguous_label_stringification` 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)

`--[no]incompatible_use_cc_configure_from_rules_cc` 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)

`--max_computation_steps=<a long integer&gt;` 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)

`--nested_set_depth_limit=&lt;an integer&gt;` 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)

`--repositories_without_autoloads=&lt;comma-separated set of options&gt;` default: ""
:   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)

Options relating to Bzlmod output and semantics:

`--allow_yanked_versions=<a string&gt;` multiple uses are accumulated
:   Specified the module versions in the form of
    `&#123;module1&#125;@&#123;version1&#125;,module2@&#123;version2&#125;` 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`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/NonRegistryOverride.java)).
    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).

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--check_bazel_compatibility=&lt;error, warning or off&gt;` 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)

`--check_direct_dependencies=&lt;off, warning or error&gt;` 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)

`--[no]ignore_dev_dependency` 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)

`--lockfile_mode=&lt;off, update, refresh or error&gt;` 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)

`--module_mirrors=<a '[name=]value1[,..,valueN]' assignment&gt;` multiple uses are accumulated
:   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=&lt;registry&gt;=&lt;mirror1&gt;[,&lt;mirror2&gt;,...]` (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).

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--override_module=&lt;an equals-separated mapping of module name to path&gt;` multiple uses are accumulated
:   Override a module with a local path in the form of `&#123;module name&#125;=&#123;path&#125;`. 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.

`--registry=<a string&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--vendor_dir=<a path&gt;` 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)

Options that trigger optimizations of the build time:

`--gc_thrashing_limits=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&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)

`--[no]heuristically_drop_nodes` 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)

`--[no]incompatible_do_not_split_linking_cmdline` 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)

`--[no]keep_state_after_build` 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)

`--skyframe_high_water_mark_full_gc_drops_per_invocation=&lt;an integer, &gt;= 0&gt;` 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)

`--skyframe_high_water_mark_minor_gc_drops_per_invocation=&lt;an integer, &gt;= 0&gt;` 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)

`--skyframe_high_water_mark_threshold=&lt;an integer&gt;` 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)

`--[no]track_incremental_state` 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)

Options that affect the verbosity, format or location of logging:

`--[no]announce_rc` default: "false"
:   Whether to announce rc options.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]attempt_to_print_relative_paths` 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)

`--bes_backend=<a string&gt;` default: ""
:   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)

`--[no]bes_check_preceding_lifecycle_events` 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)

`--bes_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_instance_name=<a string&gt;` 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)

`--bes_keywords=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Specifies a list of notification keywords to be added the default set of keywords
    published to BES (`command_name=&#123;command_name&#125;`, `protocol_name=BEP`).
    Defaults to none.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]bes_lifecycle_events` default: "true"
:   Specifies whether to publish BES lifecycle events. (defaults to 'true').

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_oom_finish_upload_timeout=&lt;An immutable length of time.&gt;` 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)

`--bes_outerr_buffer_size=&lt;an integer&gt;` 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)

`--bes_outerr_chunk_size=&lt;an integer&gt;` 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)

`--bes_proxy=<a string&gt;` 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`).

`--bes_results_url=<a string&gt;` default: ""
:   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)

`--bes_system_keywords=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_timeout=&lt;An immutable length of time.&gt;` 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)

`--bes_upload_mode=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt;` 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)

`--build_event_binary_file=<a string&gt;` default: ""
:   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)

`--[no]build_event_binary_file_path_conversion` 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)

`--build_event_binary_file_upload_mode=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt;` 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)

`--build_event_json_file=<a string&gt;` default: ""
:   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)

`--[no]build_event_json_file_path_conversion` 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)

`--build_event_json_file_upload_mode=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt;` 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)

`--build_event_max_named_set_of_file_entries=&lt;an integer&gt;` 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)

`--[no]build_event_publish_all_actions` default: "false"
:   Whether all actions should be published.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--build_event_text_file=<a string&gt;` default: ""
:   If non-empty, write a textual representation of the build event protocol to that file

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_event_text_file_path_conversion` 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)

`--build_event_text_file_upload_mode=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt;` 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)

`--build_event_upload_max_retries=&lt;an integer&gt;` default: "4"
:   The maximum number of times Bazel should retry uploading a build event.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]experimental_bep_target_summary` default: "false"
:   Whether to publish `TargetSummary` events.

`--[no]experimental_build_event_expand_filesets` default: "false"
:   If true, expand Filesets in the BEP when presenting output files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_output_group_mode=&lt;an output group name followed by an OutputGroupFileMode, e.g. default=both&gt;` multiple uses are accumulated
:   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`

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_upload_retry_minimum_delay=&lt;An immutable length of time.&gt;` 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)

`--experimental_build_event_upload_strategy=<a string&gt;` 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)

`--[no]experimental_collect_load_average_in_profiler` default: "true"
:   If enabled, the profiler collects the system's overall load average.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_pressure_stall_indicators` default: "false"
:   If enabled, the profiler collects the Linux PSI data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_resource_estimation` default: "false"
:   If enabled, the profiler collects CPU and memory usage estimation for local actions.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_skyframe_counts_in_profiler` 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)

`--[no]experimental_collect_system_network_usage` default: "true"
:   If enabled, the profiler collects the system's network usage.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_worker_data_in_profiler` default: "true"
:   If enabled, the profiler collects worker's aggregated resource data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--experimental_command_profile=&lt;cpu, wall, alloc or lock&gt;` 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.

`--experimental_profile_additional_tasks=&lt;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&gt;` multiple uses are accumulated
:   Specifies additional profile tasks to be included in the profile.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_profile_include_primary_output` 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)

`--[no]experimental_profile_include_target_configuration` default: "false"
:   Includes target configuration hash in action events' JSON profile data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_profile_include_target_label` default: "false"
:   Includes target label in action events' JSON profile data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_record_metrics_for_all_mnemonics` 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.

`--[no]experimental_record_skyframe_metrics` 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.

`--[no]experimental_run_bep_event_include_residue` 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)

`--[no]experimental_stream_log_file_uploads` default: "false"
:   Stream log file uploads directly to the remote storage rather than writing them to disk.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_workspace_rules_log_file=<a path&gt;` default: see description
:   Log certain Workspace Rules events into this file as delimited WorkspaceEvent protos.

`--[no]generate_json_trace_profile` 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)

`--[no]heap_dump_on_oom` 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)

`--jvm_heap_histogram_internal_object_pattern=<a valid Java regular expression&gt;` 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()

`--[no]legacy_important_outputs` 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)

`--logging=&lt;0 &lt;= an integer &lt;= 6&gt;` default: "3"
:   The logging level.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--memory_profile=<a path&gt;` 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)

`--memory_profile_stable_heap_parameters=&lt;integers, separated by a comma expected in pairs&gt;` 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)

`--profile=<a path&gt;` 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)

`--profiles_to_retain=&lt;an integer&gt;` 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)

`--[no]record_full_profiler_data` 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)

`--[no]redirect_local_instrumentation_output_writes` 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)

`--remote_print_execution_messages=&lt;failure, success or all&gt;` 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)

`--[no]slim_profile` 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)

`--starlark_cpu_profile=<a string&gt;` default: ""
:   Writes into the specified file a pprof profile of CPU usage by all Starlark threads.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--tool_tag=<a string&gt;` default: ""
:   A tool name to attribute this Bazel invocation to.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--ui_event_filters=&lt;Convert list of comma separated event kind to list of filters&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]write_command_log` default: "false"
:   Whether or not to write the command.log file

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

Remote caching and execution options:

`--downloader_config=<a path&gt;` 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.

`--experimental_circuit_breaker_strategy=&lt;failure&gt;` 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)

`--experimental_remote_cache_compression_threshold=&lt;an integer&gt;` default: "100"
:   The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote\_cache\_compression is set.

`--[no]experimental_remote_cache_lease_extension` 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`.

`--experimental_remote_cache_ttl=&lt;An immutable length of time.&gt;` 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)

`--experimental_remote_capture_corrupted_outputs=<a path&gt;` default: see description
:   A path to a directory where the corrupted outputs will be captured to.

`--[no]experimental_remote_discard_merkle_trees` 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.

`--experimental_remote_downloader=<a string&gt;` 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

`--[no]experimental_remote_downloader_local_fallback` default: "false"
:   Whether to fall back to the local downloader if remote downloader fails.

`--[no]experimental_remote_downloader_propagate_credentials` 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:&lt;url-index&gt;:&lt;header-key&gt;` qualifier where the `&lt;url-index&gt;` 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.

`--experimental_remote_failure_rate_threshold=&lt;an integer in 0-100 range&gt;` 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)

`--experimental_remote_failure_window_interval=&lt;An immutable length of time.&gt;` 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)

`--[no]experimental_remote_mark_tool_inputs` 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.

`--experimental_remote_output_service=<a string&gt;` 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.

`--experimental_remote_output_service_output_path_prefix=<a string&gt;` default: ""
:   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.

`--[no]experimental_remote_require_cached` 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.

`--experimental_remote_scrubbing_config=&lt;Converts to a Scrubber&gt;` 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).

`--[no]guard_against_concurrent_changes` 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)

`--[no]incompatible_remote_local_fallback_for_remote_cache` default: "false"
:   Whether --remote\_local\_fallback applies to --remote\_cache.

`--[no]remote_accept_cached` default: "true"
:   Whether to accept remotely cached action results.

`--remote_build_event_upload=&lt;all or minimal&gt;` 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'.

`--remote_bytestream_uri_prefix=<a string&gt;` 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 "$&#123;hostname&#125;/$&#123;instance\_name&#125;".

`--remote_cache=<a string&gt;` 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

`--[no]remote_cache_async` 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.

`--[no]remote_cache_compression` default: "false"
:   If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental\_remote\_cache\_compression\_threshold.

`--remote_cache_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_default_exec_properties=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec\_properties.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_regex=<a valid Java regular expression&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_downloader_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_exec_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_execution_priority=&lt;an integer&gt;` default: "0"
:   The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.

`--remote_executor=<a string&gt;` 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.

`--remote_grpc_log=<a path&gt;` 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).

`--remote_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_instance_name=<a string&gt;` default: ""
:   Value to pass as instance\_name in the remote execution API.

`--[no]remote_local_fallback` default: "false"
:   Whether to fall back to standalone local execution strategy if remote execution fails.

`--remote_local_fallback_strategy=<a string&gt;` default: "local"
:   Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.

`--remote_max_concurrency_per_connection=&lt;an integer&gt;` 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)

`--remote_max_connections=&lt;an integer&gt;` 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)

`--remote_proxy=<a string&gt;` 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).

`--remote_result_cache_priority=&lt;an integer&gt;` default: "0"
:   The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.

`--remote_retries=&lt;an integer&gt;` default: "5"
:   The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.

`--remote_retry_max_delay=&lt;An immutable length of time.&gt;` 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.

`--remote_timeout=&lt;An immutable length of time.&gt;` 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.

`--[no]remote_upload_local_results` 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.

`--[no]remote_verify_downloads` 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.

Miscellaneous options, not otherwise categorized.:

`--build_metadata=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Custom key-value string pairs to supply in a build event.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--color=&lt;yes, no or auto&gt;` default: "auto"
:   Use terminal controls to colorize output.

`--config=<a string&gt;` multiple uses are accumulated
:   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.

`--credential_helper=&lt;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.&gt;` multiple uses are accumulated
:   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.

`--credential_helper_cache_duration=&lt;An immutable length of time.&gt;` 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.

`--credential_helper_timeout=&lt;An immutable length of time.&gt;` default: "10s"
:   Configures the timeout for a credential helper.

    Credential helpers failing to respond within this timeout will fail the invocation.

`--curses=&lt;yes, no or auto&gt;` default: "auto"
:   Use terminal cursor controls to minimize scrolling output.

`--disk_cache=<a path&gt;` 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.

`--[no]enable_platform_specific_config` 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.

`--experimental_action_cache_gc_idle_delay=&lt;An immutable length of time.&gt;` 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)

`--experimental_action_cache_gc_max_age=&lt;An immutable length of time.&gt;` 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)

`--experimental_action_cache_gc_threshold=&lt;an integer in 0-100 range&gt;` 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)

`--experimental_disk_cache_gc_idle_delay=&lt;An immutable length of time.&gt;` 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.

`--experimental_disk_cache_gc_max_age=&lt;An immutable length of time.&gt;` 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.

`--experimental_disk_cache_gc_max_size=<a size in bytes, optionally followed by a K, M, G or T multiplier&gt;` 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.

`--[no]experimental_enable_thread_dump` 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)

`--experimental_install_base_gc_max_age=&lt;An immutable length of time.&gt;` 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)

`--[no]experimental_rule_extension_api` default: "true"
:   Enable experimental rule extension API and subrule APIs

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_thread_dump_action_execution_inactivity_duration=&lt;An immutable length of time.&gt;` 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)

`--experimental_thread_dump_interval=&lt;An immutable length of time.&gt;` default: "0"
:   How often to dump the threads periodically. If zero, no thread dumps are written periodically.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_windows_watchfs` default: "false"
:   If true, experimental Windows support for --watchfs is enabled. Otherwise --watchfsis a non-op on Windows. Make sure to also enable --watchfs.

`--google_auth_scopes=&lt;comma-separated list of options&gt;` default: "https://www.googleapis.com/auth/cloud-platform"
:   A comma-separated list of Google Cloud authentication scopes.

`--google_credentials=<a string&gt;` default: see description
:   Specifies the file to get authentication credentials from. See https://cloud.google.com/docs/authentication for details.

`--[no]google_default_credentials` 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.

`--grpc_keepalive_time=&lt;An immutable length of time.&gt;` 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.

`--grpc_keepalive_timeout=&lt;An immutable length of time.&gt;` 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.

`--[no]incompatible_disable_non_executable_java_binary` 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)

`--inject_repository=&lt;an equals-separated mapping of repository name to path&gt;` multiple uses are accumulated
:   Adds a new repository with a local path in the form of `&#123;repository name&#125;=&#123;path&#125;`. 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.

`--invocation_id=<a UUID&gt;` default: ""
:   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)

`--override_repository=&lt;an equals-separated mapping of repository name to path&gt;` multiple uses are accumulated
:   Override a repository with a local path in the form of `&#123;repository name&#125;=&#123;path&#125;`,
    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.

`--[no]progress_in_terminal_title` default: "false"
:   Show the command progress in the terminal title. Useful to see what bazel is doing when having multiple terminal tabs.

`--[no]show_progress` default: "true"
:   Display progress messages during a build.

`--show_progress_rate_limit=<a double&gt;` default: "0.2"
:   Minimum number of seconds between progress messages in the output.

`--[no]show_timestamps` default: "false"
:   Include timestamps in messages

`--tls_certificate=<a string&gt;` default: see description
:   Specify a path to a TLS certificate that is trusted to sign server certificates.

`--tls_client_certificate=<a string&gt;` default: see description
:   Specify the TLS client certificate to use; you also need to provide a client key to enable client authentication.

`--tls_client_key=<a string&gt;` default: see description
:   Specify the TLS client key to use; you also need to provide a client certificate to enable client authentication.

`--ui_actions_shown=&lt;an integer&gt;` 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)

`--[no]watchfs` 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.

## Aquery Options

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

Options relating to query output and semantics:

`--aspect_deps=&lt;off, conservative or precise&gt;` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of &#123;xml,proto,record&#125;. '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)

`--[no]consistent_labels` default: "false"
:   If enabled, every query command emits labels as if by the Starlark <code>str</code> function applied to a <code>Label</code> 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)

`--[no]experimental_explicit_aspects` 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)

`--[no]graph:factored` 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)

`--graph:node_limit=&lt;an integer&gt;` 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)

`--[no]implicit_deps` 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)

`--[no]include_artifacts` default: "true"
:   Includes names of the action inputs and outputs in the output (potentially large).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_aspects` 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)

`--[no]include_commandline` default: "true"
:   Includes the content of the action command lines in the output (potentially large).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_file_write_contents` default: "false"
:   Include the file contents for the FileWrite, SourceSymlinkManifest, and RepoMappingManifest actions (potentially large).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_param_files` 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)

`--[no]include_pruned_inputs` 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)

`--[no]incompatible_package_group_includes_double_slash` 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)

`--[no]infer_universe_scope` 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)

`--[no]line_terminator_null` default: "false"
:   Whether each format is terminated with \0 instead of newline.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]nodep_deps` 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)

`--output=<a string&gt;` 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)

`--output_file=<a string&gt;` default: ""
:   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 <code>bazel query &gt; file</code>.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:default_values` 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)

`--[no]proto:definition_stack` 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)

`--[no]proto:flatten_selects` 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)

`--[no]proto:include_attribute_source_aspects` 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)

`--[no]proto:include_starlark_rule_env` default: "true"
:   Use the starlark environment in the value of the generated $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)

`--[no]proto:include_synthetic_attribute_hash` default: "false"
:   Whether or not to calculate and populate the $internal\_attr\_hash attribute.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:instantiation_stack` 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)

`--[no]proto:locations` default: "true"
:   Whether to output location information in proto output at all.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--proto:output_rule_attrs=&lt;comma-separated list of options&gt;` 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)

`--[no]proto:rule_classes` 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)

`--[no]proto:rule_inputs_and_outputs` default: "true"
:   Whether or not to populate the rule\_input and rule\_output fields.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--query_file=<a string&gt;` default: ""
:   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)

`--[no]relative_locations` 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)

`--[no]skyframe_state` 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)

`--[no]tool_deps` 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)

`--universe_scope=&lt;comma-separated list of options&gt;` default: ""
:   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)

Options that control build execution:

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_split_coverage_postprocessing` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   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)

`--persistent_android_resource_processor`
:   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)

`--persistent_multiplex_android_dex_desugar`
:   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)

`--persistent_multiplex_android_resource_processor`
:   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)

`--persistent_multiplex_android_tools`
:   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)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string&gt;` 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)

`--android_manifest_merger=&lt;legacy, android or force_android&gt;` 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)

`--android_platforms=<a build target label&gt;` default: ""
:   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)

`--cc_output_directory_tag=<a string&gt;` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string&gt;` 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)

`--coverage_output_generator=<a build target label&gt;` 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)

`--coverage_report_generator=<a build target label&gt;` 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)

`--coverage_support=<a build target label&gt;` 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)

`--custom_malloc=<a build target label&gt;` 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)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&#123;version&#125;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&#123;version\_label&#125;" 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)

`--[no]experimental_prefer_mutual_xcode` 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)

`--extra_execution_platforms=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--extra_toolchains=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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()`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label&gt;` 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)

`--host_compiler=<a string&gt;` 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)

`--host_grte_top=<a label&gt;` 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)

`--host_platform=<a build target label&gt;` 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)

`--[no]incompatible_bazel_test_exec_run_under` 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)

`--[no]incompatible_builtin_objc_strip_action` 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)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` 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)

`--[no]incompatible_enable_apple_toolchain_resolution` 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)

`--[no]incompatible_remove_legacy_whole_archive` 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)

`--[no]incompatible_strip_executable_safely` 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)

`--[no]interface_shared_objects` 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)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--minimum_os_version=<a string&gt;` 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)

`--platform_mappings=<a main workspace-relative path&gt;` default: ""
:   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)

`--platforms=<a build target label&gt;` default: ""
:   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)

`--python_path=<a string&gt;` 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)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--[no]use_platforms_in_apple_crosstool_transition` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xcode_version=<a string&gt;` 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)

`--xcode_version_config=<a build target label&gt;` 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)

Options that control the output of the command:

`--[no]apple_generate_dsym` 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)

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]build_test_dwp` 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)

`--cc_proto_library_header_suffixes=&lt;comma-separated set of options&gt;` 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)

`--cc_proto_library_source_suffixes=&lt;comma-separated set of options&gt;` 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)

`--[no]experimental_proto_descriptor_sets_include_source_info` 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)

`--[no]experimental_save_feature_state` 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)

`--fission=<a set of compilation modes&gt;` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &#123;'fastbuild', 'dbg', 'opt'&#125; 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` 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)

`--[no]android_databinding_use_v3_4_args` 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)

`--android_dynamic_mode=&lt;off, default or fully&gt;` 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)

`--android_manifest_merger_order=&lt;alphabetical, alphabetical_by_configuration or dependency&gt;` 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)

`--[no]android_resource_shrinking` 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)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string&gt;` default: ""
:   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)

`--cs_fdo_absolute_path=<a string&gt;` 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)

`--cs_fdo_instrument=<a string&gt;` 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)

`--cs_fdo_profile=<a build target label&gt;` default: see description
:   The cs\_fdo\_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=&lt;off, default or fully&gt;` 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)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` 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)

`--[no]experimental_android_databinding_v2` 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)

`--[no]experimental_android_resource_shrinking` 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)

`--[no]experimental_android_rewrite_dexes_with_rex` 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)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_objc_fastbuild_options=&lt;comma-separated list of options&gt;` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py\_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` 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)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--fdo_instrument=<a string&gt;` 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)

`--fdo_optimize=<a string&gt;` 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)

`--fdo_prefetch_hints=<a build target label&gt;` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label&gt;` default: see description
:   The fdo\_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` 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)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--host_per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--ios_multi_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios\_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   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)

`--linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos\_sdk\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label&gt;` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` 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)

`--[no]objc_enable_binary_stripping` 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)

`--objccopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--per_file_ltobackendopt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string&gt;` 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)

`--propeller_optimize=<a build target label&gt;` 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)

`--propeller_optimize_absolute_cc_profile=<a string&gt;` default: see description
:   Absolute path name of cc\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string&gt;` default: see description
:   Absolute path name of ld\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]share_native_deps` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=&lt;always, sometimes or never&gt;` 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)

`--stripopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--visionos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xbinary_fdo=<a build target label&gt;` 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)

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

`--[no]check_visibility` 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)

`--[no]desugar_for_android` 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)

`--[no]desugar_java8_libs` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_check_desugar_deps` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--experimental_one_version_enforcement=&lt;off, warning or error&gt;` 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)

`--experimental_strict_java_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]incompatible_disable_native_android_rules` 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)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` 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)

`--python_native_rules_allowlist=<a build target label&gt;` 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)

`--[no]strict_filesets` 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)

`--strict_proto_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--strict_public_imports=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]strict_system_includes` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=&lt;v1, v2, v1_v2 or v4&gt;` 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)

`--[no]device_debug_entitlements` 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)

`--ios_signing_cert_name=<a string&gt;` 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)

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

`--[no]incompatible_disallow_sdk_frameworks_attributes` 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)

`--[no]incompatible_objc_alwayslink_by_default` 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)

`--[no]incompatible_python_disallow_native_rules` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

`--[no]break_build_on_parallel_dex2oat_failure` 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)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100&gt;` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is
    `&#123;resource&#125;=&#123;value&#125;`. If a single positive number is specified as `&#123;value&#125;`
    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 `[-|*]&#123;float&#125;` (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.

`--[no]experimental_android_use_parallel_dex2oat` 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)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios\_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string&gt;` 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)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once&gt;` multiple uses are accumulated
:   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.

`--test_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers&gt;` 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]cc_dotd_files` 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)

`--[no]cc_include_scanning` 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)

`--[no]experimental_filter_library_jar_with_program_jar` 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)

`--[no]experimental_inmemory_dotd_files` 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)

`--[no]experimental_inmemory_jdeps_files` 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)

`--[no]experimental_retain_test_configuration_across_testonly` 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)

`--[no]experimental_unsupported_and_brittle_include_scanning` 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)

`--[no]incremental_dexing` 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)

`--[no]objc_use_dotd_pruning` 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)

`--[no]process_headers_in_dependencies` 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)

`--[no]trim_test_configuration` 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)

Options that affect the verbosity, format or location of logging:

`--toolchain_resolution_debug=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

`--[no]incompatible_default_to_explicit_init_py` 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)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to `auto`, Bazel reruns a test if and only if:

    1. Bazel detects changes in the test or its dependencies,
    2. The test is marked as `external`,
    3. Multiple test runs were requested with `--runs_per_test`, or
    4. 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.

`--[no]experimental_cancel_concurrent_tests` 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)

`--[no]experimental_fetch_all_coverage_outputs` 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)

`--[no]experimental_generate_llvm_lcov` 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)

`--experimental_java_classpath=&lt;off, javabuilder, bazel or bazel_no_fallback&gt;` default: "bazel"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` 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.

`--host_java_launcher=<a build target label&gt;` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string&gt;` multiple uses are accumulated
:   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.

`--[no]incompatible_check_sharding_support` 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)

`--[no]incompatible_exclusive_test_sandboxed` 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)

`--[no]incompatible_strict_action_env` 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)

`--j2objc_translation_flags=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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`

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string&gt;` default: ""
:   The Java language version

`--java_launcher=<a build target label&gt;` 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.

`--java_runtime_version=<a string&gt;` default: "local\_jdk"
:   The Java runtime version

`--javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the Java VM. These options will get added to the VM startup options of each java\_binary target.

`--legacy_main_dex_list_generator=<a build target label&gt;` 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.

`--optimizing_dexer=<a build target label&gt;` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label&gt;` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java\_plugin.

`--proguard_top=<a build target label&gt;` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label&gt;` 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)

`--[no]proto_profile` 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)

`--proto_profile_path=<a build target label&gt;` 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)

`--proto_toolchain_for_cc=<a build target label&gt;` 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)

`--proto_toolchain_for_j2objc=<a build target label&gt;` 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)

`--proto_toolchain_for_java=<a build target label&gt;` 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)

`--proto_toolchain_for_javalite=<a build target label&gt;` 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)

`--protocopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` 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.

`--shell_executable=<a path&gt;` 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)

`--test_arg=<a string&gt;` multiple uses are accumulated
:   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.

`--test_filter=<a string&gt;` 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.

`--test_result_expiration=&lt;an integer&gt;` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.

`--test_sharding_strategy=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt;` 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.

`--tool_java_language_version=<a string&gt;` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string&gt;` default: "remotejdk\_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` 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.

## Build Options

Options that control build execution:

`--[no]allow_one_action_on_resource_unavailable` 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)

`--allowed_strategies_by_exec_platform=<a '&lt;Label&gt;=value[,value]' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]check_up_to_date` 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)

`--dynamic_local_execution_delay=&lt;an integer&gt;` 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)

`--dynamic_local_strategy=<a '[name=]value1[,..,valueN]' assignment&gt;` multiple uses are accumulated
:   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,...]

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--dynamic_remote_strategy=<a '[name=]value1[,..,valueN]' assignment&gt;` multiple uses are accumulated
:   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,...]

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_async_execution` 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)

`--experimental_async_execution_max_concurrent_actions=&lt;an integer&gt;` 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)

`--experimental_docker_image=<a string&gt;` default: ""
:   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)

`--[no]experimental_docker_use_customized_images` 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)

`--[no]experimental_dynamic_exclude_tools` 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)

`--experimental_dynamic_local_load_factor=<a double&gt;` 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)

`--experimental_dynamic_slow_remote_time=&lt;An immutable length of time.&gt;` 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)

`--[no]experimental_enable_docker_sandbox` default: "false"
:   Enable Docker-based sandboxing. This option has no effect if Docker is not installed.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_inmemory_sandbox_stashes` 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)

`--experimental_sandbox_async_tree_delete_idle_threads=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

`--experimental_sandbox_enforce_resources_regexp=<a valid Java regular expression&gt;` default: ""
:   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)

`--experimental_sandbox_limits=<a named double, 'name=value', where value is an integer, or a keyword ("HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "HOST_CPUS", "HOST_CPUS*.5"&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_sandbox_memory_limit_mb=&lt;an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.&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)

`--[no]experimental_shrink_worker_pool` 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)

`--experimental_total_worker_memory_limit_mb=&lt;an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.&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)

`--[no]experimental_use_hermetic_linux_sandbox` 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)

`--[no]experimental_use_windows_sandbox` 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)

`--experimental_windows_sandbox_path=<a string&gt;` 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)

`--experimental_worker_allowlist=&lt;comma-separated set of options&gt;` 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)

`--[no]experimental_worker_cancellation` default: "false"
:   If enabled, Bazel may send cancellation requests to workers that support them.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_worker_memory_limit_mb=&lt;an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.&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)

`--experimental_worker_metrics_poll_interval=&lt;An immutable length of time.&gt;` 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)

`--[no]experimental_worker_multiplex_sandboxing` 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)

`--[no]experimental_worker_sandbox_hardening` 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)

`--experimental_worker_sandbox_inmemory_tracking=<a string&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_worker_strict_flagfiles` 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)

`--genrule_strategy=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--[no]incompatible_use_new_cgroup_implementation` 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)

`--[no]internal_spawn_scheduler` 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)

`--jobs=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` [`-j`] default: "auto"
:   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)

`--[no]keep_going` [`-k`] default: "false"
:   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)

`--loading_phase_threads=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

`--[no]reuse_sandbox_directories` 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)

`--sandbox_base=<a string&gt;` default: ""
:   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)

`--[no]sandbox_enable_loopback_device` 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)

`--[no]sandbox_explicit_pseudoterminal` 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)

`--sandbox_tmpfs_path=&lt;an absolute path&gt;` multiple uses are accumulated
:   For sandboxed actions, mount an empty, writable directory at this absolute path (if supported by the sandboxing implementation, ignored otherwise).

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--[no]skip_incompatible_explicit_targets` 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.0.0/extending/platforms#skipping-incompatible-targets)

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--spawn_strategy=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--strategy=<a '[name=]value1[,..,valueN]' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--strategy_regexp=<a '&lt;RegexFilter&gt;=value[,value]' assignment&gt;` multiple uses are accumulated
:   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'.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--worker_extra_flag=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--worker_max_instances=&lt;[name=]value, where value is an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--worker_max_multiplex_instances=&lt;[name=]value, where value is an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]worker_multiplex` 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)

`--[no]worker_quit_after_build` 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)

`--[no]worker_sandboxing` 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)

`--[no]worker_verbose` default: "false"
:   If enabled, prints verbose messages when workers are started, shutdown, ...

Options that control the output of the command:

`--[no]build` 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)

`--[no]experimental_use_validation_aspect` default: "false"
:   Whether to run validation actions using aspect (for parallelism with tests).

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--output_groups=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]run_validations` default: "true"
:   Whether to run validation actions as part of the build. See [Validation Actions](https://bazel.build/versions/9.0.0/extending/rules#validation_actions).

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--serialized_frontier_profile=<a string&gt;` default: ""
:   Dump a profile of serialized frontier bytes. Specifies the output path.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

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

`--aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.
    `&#123;bzl-file-label&#125;%&#123;aspect_name&#125;`, for example `//tools:my_def.bzl%my_aspect`, where
    `my_aspect` is a top-level value from a file `tools/my_def.bzl`.

`--bep_maximum_open_remote_upload_files=&lt;an integer&gt;` default: "-1"
:   Maximum number of open files allowed during BEP artifact upload.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_convenience_symlinks` 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)

`--[no]experimental_convenience_symlinks_bep_event` 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)

`--remote_download_all`
:   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)

`--remote_download_minimal`
:   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)

`--remote_download_outputs=&lt;all, minimal or toplevel&gt;` 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)

`--remote_download_symlink_template=<a string&gt;` default: ""
:   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 &#123;hash&#125; and &#123;size\_bytes&#125; 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)

`--remote_download_toplevel`
:   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)

`--symlink_prefix=<a string&gt;` 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)

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

`--[no]experimental_docker_privileged` 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)

`--[no]experimental_sandboxfs_map_symlink_targets` default: "false"
:   No-op

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--sandbox_add_mount_pair=<a single path or a 'source:target' pair&gt;` multiple uses are accumulated
:   Add additional path pair to mount in sandbox.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--sandbox_block_path=<a string&gt;` multiple uses are accumulated
:   For sandboxed actions, disallow access to this path.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_default_allow_network` default: "true"
:   Allow network access by default for actions; this may not work with all sandboxing implementations.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_fake_hostname` default: "false"
:   Change the current hostname to 'localhost' for sandboxed actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_fake_username` default: "false"
:   Change the current username to 'nobody' for sandboxed actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--sandbox_writable_path=<a string&gt;` multiple uses are accumulated
:   For sandboxed actions, make an existing directory writable in the sandbox (if supported by the sandboxing implementation, ignored otherwise).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

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

`--[no]incompatible_config_setting_private_default_visibility` 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)

`--[no]incompatible_enforce_config_setting_visibility` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]check_tests_up_to_date` 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)

`--flaky_test_attempts=<a positive integer, the string "default", or test_regex@attempts. This flag may be passed more than once&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--local_test_jobs=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

`--[no]test_keep_going` 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)

`--test_strategy=<a string&gt;` default: ""
:   Specifies which strategy to use when running tests.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--test_tmpdir=<a path&gt;` default: see description
:   Specifies the base temporary directory for 'bazel test' to use.

Options that trigger optimizations of the build time:

`--cache_computed_file_digests=<a long integer&gt;` 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.

`--experimental_active_directories=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--[no]experimental_cpu_load_scheduling` 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)

`--experimental_dynamic_ignore_local_signals=<a comma-separated list of signal numbers&gt;` 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)

`--[no]experimental_enable_skyfocus` 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)

`--local_resources=<a named double, 'name=value', where value is an integer, or a keyword ("HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "HOST_CPUS", "HOST_CPUS*.5"&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

Options that affect the verbosity, format or location of logging:

`--build_event_upload_max_retries=&lt;an integer&gt;` default: "4"
:   The maximum number of times Bazel should retry uploading a build event.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]debug_spawn_scheduler` default: "false"

`--[no]experimental_bep_target_summary` default: "false"
:   Whether to publish `TargetSummary` events.

`--[no]experimental_build_event_expand_filesets` default: "false"
:   If true, expand Filesets in the BEP when presenting output files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_output_group_mode=&lt;an output group name followed by an OutputGroupFileMode, e.g. default=both&gt;` multiple uses are accumulated
:   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`

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_upload_retry_minimum_delay=&lt;An immutable length of time.&gt;` 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)

`--experimental_build_event_upload_strategy=<a string&gt;` 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)

`--[no]experimental_docker_verbose` default: "false"
:   If enabled, Bazel will print more verbose messages about the Docker sandbox strategy.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_frontier_violation_check=&lt;strict, warn or disabled_for_testing&gt;` 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)

`--[no]experimental_frontier_violation_verbose` default: "false"
:   If true, Bazel will print instructions for fixing Skycache violations

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_materialize_param_files_directly` default: "false"
:   If materializing param files, do so with direct writes to disk.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_run_bep_event_include_residue` 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)

`--experimental_skyfocus_dump_keys=&lt;none, count or verbose&gt;` default: "none"
:   For debugging Skyfocus. Dump the focused SkyKeys (roots, leafs, focused deps, focused rdeps).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_skyfocus_dump_post_gc_stats` 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)

`--[no]experimental_stream_log_file_uploads` default: "false"
:   Stream log file uploads directly to the remote storage rather than writing them to disk.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--explain=<a path&gt;` 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)

`--[no]legacy_important_outputs` 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)

`--[no]materialize_param_files` 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)

`--max_config_changes_to_show=&lt;an integer&gt;` 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)

`--max_test_output_bytes=&lt;an integer&gt;` 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)

`--output_filter=<a valid Java regular expression&gt;` 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)

`--progress_report_interval=&lt;an integer in 0-3600 range&gt;` 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)

`--remote_analysis_json_log=<a string&gt;` 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)

`--remote_print_execution_messages=&lt;failure, success or all&gt;` 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)

`--[no]sandbox_debug` 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)

`--show_result=&lt;an integer&gt;` 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)

`--[no]subcommands` [`-s`] default: "false"
:   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)

`--test_output=&lt;summary, errors, all or streamed&gt;` default: "summary"
:   Specifies desired output mode. Valid values are 'summary' to output only test status summary, 'errors' to also print test logs for failed tests, 'all' to print 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)

`--test_summary=&lt;short, terse, detailed, none or testcase&gt;` default: "short"
:   Specifies the desired format of the test summary. Valid values are 'short' to print information only about tests executed, 'terse', to print information only about unsuccessful tests that were run, 'detailed' to print detailed information about failed test cases, 'testcase' to print summary in test case resolution, do not print detailed information about failed test cases and 'none' to omit the summary.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]verbose_failures` default: "false"
:   If a command fails, print out the full command line.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--aspects_parameters=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Specifies the values of the command-line aspects parameters. Each parameter value is
    specified via `&lt;param_name&gt;=&lt;param_value&gt;`, 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--target_pattern_file=<a string&gt;` default: ""
:   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)

Remote caching and execution options:

`--experimental_circuit_breaker_strategy=&lt;failure&gt;` 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)

`--experimental_remote_cache_compression_threshold=&lt;an integer&gt;` default: "100"
:   The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote\_cache\_compression is set.

`--experimental_remote_cache_eviction_retries=&lt;an integer&gt;` 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)

`--[no]experimental_remote_cache_lease_extension` 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`.

`--experimental_remote_cache_ttl=&lt;An immutable length of time.&gt;` 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)

`--experimental_remote_capture_corrupted_outputs=<a path&gt;` default: see description
:   A path to a directory where the corrupted outputs will be captured to.

`--[no]experimental_remote_discard_merkle_trees` 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.

`--experimental_remote_downloader=<a string&gt;` 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

`--[no]experimental_remote_downloader_local_fallback` default: "false"
:   Whether to fall back to the local downloader if remote downloader fails.

`--[no]experimental_remote_downloader_propagate_credentials` 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:&lt;url-index&gt;:&lt;header-key&gt;` qualifier where the `&lt;url-index&gt;` 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.

`--experimental_remote_failure_rate_threshold=&lt;an integer in 0-100 range&gt;` 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)

`--experimental_remote_failure_window_interval=&lt;An immutable length of time.&gt;` 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)

`--[no]experimental_remote_mark_tool_inputs` 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.

`--experimental_remote_output_service=<a string&gt;` 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.

`--experimental_remote_output_service_output_path_prefix=<a string&gt;` default: ""
:   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.

`--[no]experimental_remote_require_cached` 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.

`--experimental_remote_scrubbing_config=&lt;Converts to a Scrubber&gt;` 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).

`--[no]guard_against_concurrent_changes` 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)

`--[no]incompatible_remote_local_fallback_for_remote_cache` default: "false"
:   Whether --remote\_local\_fallback applies to --remote\_cache.

`--[no]remote_accept_cached` default: "true"
:   Whether to accept remotely cached action results.

`--remote_build_event_upload=&lt;all or minimal&gt;` 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'.

`--remote_bytestream_uri_prefix=<a string&gt;` 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 "$&#123;hostname&#125;/$&#123;instance\_name&#125;".

`--remote_cache=<a string&gt;` 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

`--[no]remote_cache_async` 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.

`--[no]remote_cache_compression` default: "false"
:   If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental\_remote\_cache\_compression\_threshold.

`--remote_cache_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_default_exec_properties=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec\_properties.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_regex=<a valid Java regular expression&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_downloader_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_exec_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_execution_priority=&lt;an integer&gt;` default: "0"
:   The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.

`--remote_executor=<a string&gt;` 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.

`--remote_grpc_log=<a path&gt;` 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).

`--remote_header=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   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.

`--remote_instance_name=<a string&gt;` default: ""
:   Value to pass as instance\_name in the remote execution API.

`--[no]remote_local_fallback` default: "false"
:   Whether to fall back to standalone local execution strategy if remote execution fails.

`--remote_local_fallback_strategy=<a string&gt;` default: "local"
:   Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.

`--remote_max_concurrency_per_connection=&lt;an integer&gt;` 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)

`--remote_max_connections=&lt;an integer&gt;` 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)

`--remote_proxy=<a string&gt;` 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).

`--remote_result_cache_priority=&lt;an integer&gt;` default: "0"
:   The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.

`--remote_retries=&lt;an integer&gt;` default: "5"
:   The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.

`--remote_retry_max_delay=&lt;An immutable length of time.&gt;` 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.

`--remote_timeout=&lt;An immutable length of time.&gt;` 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.

`--[no]remote_upload_local_results` 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.

`--[no]remote_verify_downloads` 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.

Miscellaneous options, not otherwise categorized.:

`--[no]allow_analysis_cache_discard` 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)

`--auto_output_filter=&lt;none, all, packages or subpackages&gt;` 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)'.

`--[no]build_manual_tests` 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).

`--build_tag_filters=&lt;comma-separated list of options&gt;` default: ""
:   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'

`--[no]build_tests_only` 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.

`--combined_report=&lt;none or lcov&gt;` default: "lcov"
:   Specifies desired cumulative coverage report type. At this point only LCOV is supported.

`--[no]compile_one_dependency` 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.

`--deleted_packages=&lt;comma-separated list of package names&gt;` multiple uses are accumulated
:   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.

`--[no]discard_analysis_cache` default: "false"
:   Discard the analysis cache immediately after the analysis phase completes. Reduces memory usage by ~10%, but makes further incremental builds slower.

`--disk_cache=<a path&gt;` 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.

`--embed_label=<a one-line string&gt;` default: ""
:   Embed source control revision or release label in binary

`--execution_log_binary_file=<a path&gt;` 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).

`--execution_log_compact_file=<a path&gt;` 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).

`--execution_log_json_file=<a path&gt;` 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).

`--[no]execution_log_sort` 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.

`--[no]expand_test_suites` 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)

`--experimental_disk_cache_gc_idle_delay=&lt;An immutable length of time.&gt;` 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.

`--experimental_disk_cache_gc_max_age=&lt;An immutable length of time.&gt;` 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.

`--experimental_disk_cache_gc_max_size=<a size in bytes, optionally followed by a K, M, G or T multiplier&gt;` 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.

`--experimental_extra_action_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` default: ""
:   Deprecated in favor of aspects. Filters set of targets to schedule extra\_actions for.

`--[no]experimental_extra_action_top_level_only` default: "false"
:   Deprecated in favor of aspects. Only schedules extra\_actions for top level targets.

`--experimental_spawn_scheduler`
:   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=&lt;mnemonic&gt;=dynamic` flags instead.

    Expands to:

      `--internal_spawn_scheduler`

      `--spawn_strategy=dynamic`

`--[no]fetch` 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.

`--local_termination_grace_seconds=&lt;an integer&gt;` default: "15"
:   Time to wait between terminating a local process due to timeout and forcefully shutting it down.

`--package_path=&lt;colon-separated list of options&gt;` 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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

`--test_lang_filters=&lt;comma-separated list of options&gt;` default: ""
:   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.

`--test_size_filters=&lt;comma-separated list of values: small, medium, large, or enormous&gt;` default: ""
:   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.

`--test_tag_filters=&lt;comma-separated list of options&gt;` default: ""
:   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.

`--test_timeout_filters=&lt;comma-separated list of values: short, moderate, long, or eternal&gt;` default: ""
:   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.

`--workspace_status_command=&lt;path&gt;` default: ""
:   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`](https://github.com/bazelbuild/bazel/blob/master/tools/buildstamp/get_workspace_status) for an example.

Options that control build execution:

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_split_coverage_postprocessing` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   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)

`--persistent_android_resource_processor`
:   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)

`--persistent_multiplex_android_dex_desugar`
:   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)

`--persistent_multiplex_android_resource_processor`
:   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)

`--persistent_multiplex_android_tools`
:   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)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string&gt;` 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)

`--android_manifest_merger=&lt;legacy, android or force_android&gt;` 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)

`--android_platforms=<a build target label&gt;` default: ""
:   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)

`--cc_output_directory_tag=<a string&gt;` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string&gt;` 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)

`--coverage_output_generator=<a build target label&gt;` 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)

`--coverage_report_generator=<a build target label&gt;` 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)

`--coverage_support=<a build target label&gt;` 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)

`--custom_malloc=<a build target label&gt;` 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)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&#123;version&#125;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&#123;version\_label&#125;" 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)

`--[no]experimental_prefer_mutual_xcode` 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)

`--extra_execution_platforms=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--extra_toolchains=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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()`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label&gt;` 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)

`--host_compiler=<a string&gt;` 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)

`--host_grte_top=<a label&gt;` 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)

`--host_platform=<a build target label&gt;` 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)

`--[no]incompatible_bazel_test_exec_run_under` 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)

`--[no]incompatible_builtin_objc_strip_action` 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)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` 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)

`--[no]incompatible_enable_apple_toolchain_resolution` 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)

`--[no]incompatible_remove_legacy_whole_archive` 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)

`--[no]incompatible_strip_executable_safely` 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)

`--[no]interface_shared_objects` 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)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--minimum_os_version=<a string&gt;` 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)

`--platform_mappings=<a main workspace-relative path&gt;` default: ""
:   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)

`--platforms=<a build target label&gt;` default: ""
:   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)

`--python_path=<a string&gt;` 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)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--[no]use_platforms_in_apple_crosstool_transition` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xcode_version=<a string&gt;` 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)

`--xcode_version_config=<a build target label&gt;` 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)

Options that control the output of the command:

`--[no]apple_generate_dsym` 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)

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]build_test_dwp` 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)

`--cc_proto_library_header_suffixes=&lt;comma-separated set of options&gt;` 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)

`--cc_proto_library_source_suffixes=&lt;comma-separated set of options&gt;` 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)

`--[no]experimental_proto_descriptor_sets_include_source_info` 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)

`--[no]experimental_save_feature_state` 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)

`--fission=<a set of compilation modes&gt;` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &#123;'fastbuild', 'dbg', 'opt'&#125; 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` 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)

`--[no]android_databinding_use_v3_4_args` 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)

`--android_dynamic_mode=&lt;off, default or fully&gt;` 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)

`--android_manifest_merger_order=&lt;alphabetical, alphabetical_by_configuration or dependency&gt;` 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)

`--[no]android_resource_shrinking` 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)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string&gt;` default: ""
:   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)

`--cs_fdo_absolute_path=<a string&gt;` 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)

`--cs_fdo_instrument=<a string&gt;` 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)

`--cs_fdo_profile=<a build target label&gt;` default: see description
:   The cs\_fdo\_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=&lt;off, default or fully&gt;` 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)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` 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)

`--[no]experimental_android_databinding_v2` 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)

`--[no]experimental_android_resource_shrinking` 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)

`--[no]experimental_android_rewrite_dexes_with_rex` 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)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_objc_fastbuild_options=&lt;comma-separated list of options&gt;` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py\_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` 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)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--fdo_instrument=<a string&gt;` 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)

`--fdo_optimize=<a string&gt;` 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)

`--fdo_prefetch_hints=<a build target label&gt;` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label&gt;` default: see description
:   The fdo\_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` 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)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--host_per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--ios_multi_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios\_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   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)

`--linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos\_sdk\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label&gt;` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` 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)

`--[no]objc_enable_binary_stripping` 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)

`--objccopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--per_file_ltobackendopt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string&gt;` 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)

`--propeller_optimize=<a build target label&gt;` 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)

`--propeller_optimize_absolute_cc_profile=<a string&gt;` default: see description
:   Absolute path name of cc\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string&gt;` default: see description
:   Absolute path name of ld\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]share_native_deps` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=&lt;always, sometimes or never&gt;` 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)

`--stripopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--visionos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xbinary_fdo=<a build target label&gt;` 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)

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

`--[no]check_visibility` 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)

`--[no]desugar_for_android` 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)

`--[no]desugar_java8_libs` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_check_desugar_deps` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--experimental_one_version_enforcement=&lt;off, warning or error&gt;` 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)

`--experimental_strict_java_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]incompatible_disable_native_android_rules` 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)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` 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)

`--python_native_rules_allowlist=<a build target label&gt;` 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)

`--[no]strict_filesets` 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)

`--strict_proto_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--strict_public_imports=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]strict_system_includes` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=&lt;v1, v2, v1_v2 or v4&gt;` 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)

`--[no]device_debug_entitlements` 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)

`--ios_signing_cert_name=<a string&gt;` 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)

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

`--[no]incompatible_disallow_sdk_frameworks_attributes` 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)

`--[no]incompatible_objc_alwayslink_by_default` 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)

`--[no]incompatible_python_disallow_native_rules` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

`--[no]break_build_on_parallel_dex2oat_failure` 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)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100&gt;` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is
    `&#123;resource&#125;=&#123;value&#125;`. If a single positive number is specified as `&#123;value&#125;`
    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 `[-|*]&#123;float&#125;` (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.

`--[no]experimental_android_use_parallel_dex2oat` 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)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios\_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string&gt;` 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)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once&gt;` multiple uses are accumulated
:   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.

`--test_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers&gt;` 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]cc_dotd_files` 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)

`--[no]cc_include_scanning` 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)

`--[no]experimental_filter_library_jar_with_program_jar` 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)

`--[no]experimental_inmemory_dotd_files` 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)

`--[no]experimental_inmemory_jdeps_files` 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)

`--[no]experimental_retain_test_configuration_across_testonly` 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)

`--[no]experimental_unsupported_and_brittle_include_scanning` 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)

`--[no]incremental_dexing` 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)

`--[no]objc_use_dotd_pruning` 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)

`--[no]process_headers_in_dependencies` 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)

`--[no]trim_test_configuration` 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)

Options that affect the verbosity, format or location of logging:

`--toolchain_resolution_debug=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

`--[no]incompatible_default_to_explicit_init_py` 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)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to `auto`, Bazel reruns a test if and only if:

    1. Bazel detects changes in the test or its dependencies,
    2. The test is marked as `external`,
    3. Multiple test runs were requested with `--runs_per_test`, or
    4. 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.

`--[no]experimental_cancel_concurrent_tests` 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)

`--[no]experimental_fetch_all_coverage_outputs` 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)

`--[no]experimental_generate_llvm_lcov` 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)

`--experimental_java_classpath=&lt;off, javabuilder, bazel or bazel_no_fallback&gt;` default: "bazel"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` 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.

`--host_java_launcher=<a build target label&gt;` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string&gt;` multiple uses are accumulated
:   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.

`--[no]incompatible_check_sharding_support` 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)

`--[no]incompatible_exclusive_test_sandboxed` 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)

`--[no]incompatible_strict_action_env` 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)

`--j2objc_translation_flags=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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`

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string&gt;` default: ""
:   The Java language version

`--java_launcher=<a build target label&gt;` 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.

`--java_runtime_version=<a string&gt;` default: "local\_jdk"
:   The Java runtime version

`--javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the Java VM. These options will get added to the VM startup options of each java\_binary target.

`--legacy_main_dex_list_generator=<a build target label&gt;` 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.

`--optimizing_dexer=<a build target label&gt;` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label&gt;` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java\_plugin.

`--proguard_top=<a build target label&gt;` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label&gt;` 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)

`--[no]proto_profile` 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)

`--proto_profile_path=<a build target label&gt;` 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)

`--proto_toolchain_for_cc=<a build target label&gt;` 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)

`--proto_toolchain_for_j2objc=<a build target label&gt;` 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)

`--proto_toolchain_for_java=<a build target label&gt;` 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)

`--proto_toolchain_for_javalite=<a build target label&gt;` 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)

`--protocopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` 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.

`--shell_executable=<a path&gt;` 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)

`--test_arg=<a string&gt;` multiple uses are accumulated
:   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.

`--test_filter=<a string&gt;` 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.

`--test_result_expiration=&lt;an integer&gt;` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.

`--test_sharding_strategy=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt;` 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.

`--tool_java_language_version=<a string&gt;` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string&gt;` default: "remotejdk\_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` 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.

## Canonicalize-flags Options

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

Options that control the output of the command:

`--[no]canonicalize_policy` 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)

`--[no]experimental_include_default_values` 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)

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

`--[no]incompatible_config_setting_private_default_visibility` 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)

`--[no]incompatible_enforce_config_setting_visibility` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--for_command=<a string&gt;` default: "build"
:   The command for which the options should be canonicalized.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--invocation_policy=<a string&gt;` default: ""
:   Applies an invocation policy to the options to be canonicalized.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=&lt;comma-separated list of package names&gt;` multiple uses are accumulated
:   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.

`--[no]fetch` 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.

`--package_path=&lt;colon-separated list of options&gt;` 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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Clean Options

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

Options that control the output of the command:

`--[no]async` 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)

`--[no]expunge` 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)

`--expunge_async`
:   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)

## Config Options

## Coverage Options

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

## Cquery Options

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

Options relating to query output and semantics:

`--aspect_deps=&lt;off, conservative or precise&gt;` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of &#123;xml,proto,record&#125;. '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)

`--[no]consistent_labels` default: "false"
:   If enabled, every query command emits labels as if by the Starlark <code>str</code> function applied to a <code>Label</code> 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)

`--[no]experimental_explicit_aspects` 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)

`--[no]graph:factored` 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)

`--graph:node_limit=&lt;an integer&gt;` 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)

`--[no]implicit_deps` 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)

`--[no]include_aspects` 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)

`--[no]incompatible_package_group_includes_double_slash` 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)

`--[no]infer_universe_scope` 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)

`--[no]line_terminator_null` default: "false"
:   Whether each format is terminated with \0 instead of newline.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]nodep_deps` 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)

`--output=<a string&gt;` 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)

`--output_file=<a string&gt;` default: ""
:   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 <code>bazel query &gt; file</code>.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:default_values` 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)

`--[no]proto:definition_stack` 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)

`--[no]proto:flatten_selects` 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)

`--[no]proto:include_attribute_source_aspects` 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)

`--[no]proto:include_configurations` 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)

`--[no]proto:include_starlark_rule_env` default: "true"
:   Use the starlark environment in the value of the generated $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)

`--[no]proto:include_synthetic_attribute_hash` default: "false"
:   Whether or not to calculate and populate the $internal\_attr\_hash attribute.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:instantiation_stack` 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)

`--[no]proto:locations` default: "true"
:   Whether to output location information in proto output at all.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--proto:output_rule_attrs=&lt;comma-separated list of options&gt;` 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)

`--[no]proto:rule_classes` 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)

`--[no]proto:rule_inputs_and_outputs` default: "true"
:   Whether or not to populate the rule\_input and rule\_output fields.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--query_file=<a string&gt;` default: ""
:   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)

`--[no]relative_locations` 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)

`--show_config_fragments=&lt;off, direct or transitive&gt;` 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)

`--starlark:expr=<a string&gt;` default: ""
:   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)

`--starlark:file=<a string&gt;` default: ""
:   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)

`--[no]tool_deps` 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)

`--transitions=&lt;full, lite or none&gt;` default: "none"
:   The format in which cquery will print transition information.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--universe_scope=&lt;comma-separated list of options&gt;` default: ""
:   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)

Options that control build execution:

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_split_coverage_postprocessing` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   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)

`--persistent_android_resource_processor`
:   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)

`--persistent_multiplex_android_dex_desugar`
:   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)

`--persistent_multiplex_android_resource_processor`
:   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)

`--persistent_multiplex_android_tools`
:   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)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string&gt;` 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)

`--android_manifest_merger=&lt;legacy, android or force_android&gt;` 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)

`--android_platforms=<a build target label&gt;` default: ""
:   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)

`--cc_output_directory_tag=<a string&gt;` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string&gt;` 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)

`--coverage_output_generator=<a build target label&gt;` 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)

`--coverage_report_generator=<a build target label&gt;` 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)

`--coverage_support=<a build target label&gt;` 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)

`--custom_malloc=<a build target label&gt;` 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)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&#123;version&#125;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&#123;version\_label&#125;" 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)

`--[no]experimental_prefer_mutual_xcode` 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)

`--extra_execution_platforms=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--extra_toolchains=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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()`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label&gt;` 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)

`--host_compiler=<a string&gt;` 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)

`--host_grte_top=<a label&gt;` 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)

`--host_platform=<a build target label&gt;` 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)

`--[no]incompatible_bazel_test_exec_run_under` 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)

`--[no]incompatible_builtin_objc_strip_action` 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)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` 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)

`--[no]incompatible_enable_apple_toolchain_resolution` 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)

`--[no]incompatible_remove_legacy_whole_archive` 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)

`--[no]incompatible_strip_executable_safely` 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)

`--[no]interface_shared_objects` 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)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--minimum_os_version=<a string&gt;` 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)

`--platform_mappings=<a main workspace-relative path&gt;` default: ""
:   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)

`--platforms=<a build target label&gt;` default: ""
:   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)

`--python_path=<a string&gt;` 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)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--[no]use_platforms_in_apple_crosstool_transition` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xcode_version=<a string&gt;` 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)

`--xcode_version_config=<a build target label&gt;` 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)

Options that control the output of the command:

`--[no]apple_generate_dsym` 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)

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]build_test_dwp` 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)

`--cc_proto_library_header_suffixes=&lt;comma-separated set of options&gt;` 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)

`--cc_proto_library_source_suffixes=&lt;comma-separated set of options&gt;` 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)

`--[no]experimental_proto_descriptor_sets_include_source_info` 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)

`--[no]experimental_save_feature_state` 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)

`--fission=<a set of compilation modes&gt;` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &#123;'fastbuild', 'dbg', 'opt'&#125; 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` 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)

`--[no]android_databinding_use_v3_4_args` 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)

`--android_dynamic_mode=&lt;off, default or fully&gt;` 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)

`--android_manifest_merger_order=&lt;alphabetical, alphabetical_by_configuration or dependency&gt;` 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)

`--[no]android_resource_shrinking` 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)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string&gt;` default: ""
:   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)

`--cs_fdo_absolute_path=<a string&gt;` 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)

`--cs_fdo_instrument=<a string&gt;` 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)

`--cs_fdo_profile=<a build target label&gt;` default: see description
:   The cs\_fdo\_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=&lt;off, default or fully&gt;` 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)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` 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)

`--[no]experimental_android_databinding_v2` 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)

`--[no]experimental_android_resource_shrinking` 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)

`--[no]experimental_android_rewrite_dexes_with_rex` 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)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_objc_fastbuild_options=&lt;comma-separated list of options&gt;` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py\_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` 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)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--fdo_instrument=<a string&gt;` 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)

`--fdo_optimize=<a string&gt;` 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)

`--fdo_prefetch_hints=<a build target label&gt;` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label&gt;` default: see description
:   The fdo\_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` 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)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--host_per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--ios_multi_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios\_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   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)

`--linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos\_sdk\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label&gt;` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` 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)

`--[no]objc_enable_binary_stripping` 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)

`--objccopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--per_file_ltobackendopt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string&gt;` 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)

`--propeller_optimize=<a build target label&gt;` 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)

`--propeller_optimize_absolute_cc_profile=<a string&gt;` default: see description
:   Absolute path name of cc\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string&gt;` default: see description
:   Absolute path name of ld\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]share_native_deps` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=&lt;always, sometimes or never&gt;` 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)

`--stripopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--visionos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xbinary_fdo=<a build target label&gt;` 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)

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

`--[no]check_visibility` 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)

`--[no]desugar_for_android` 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)

`--[no]desugar_java8_libs` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_check_desugar_deps` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--experimental_one_version_enforcement=&lt;off, warning or error&gt;` 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)

`--experimental_strict_java_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]incompatible_disable_native_android_rules` 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)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` 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)

`--python_native_rules_allowlist=<a build target label&gt;` 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)

`--[no]strict_filesets` 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)

`--strict_proto_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--strict_public_imports=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]strict_system_includes` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=&lt;v1, v2, v1_v2 or v4&gt;` 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)

`--[no]device_debug_entitlements` 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)

`--ios_signing_cert_name=<a string&gt;` 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)

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

`--[no]incompatible_disallow_sdk_frameworks_attributes` 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)

`--[no]incompatible_objc_alwayslink_by_default` 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)

`--[no]incompatible_python_disallow_native_rules` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

`--[no]break_build_on_parallel_dex2oat_failure` 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)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100&gt;` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is
    `&#123;resource&#125;=&#123;value&#125;`. If a single positive number is specified as `&#123;value&#125;`
    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 `[-|*]&#123;float&#125;` (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.

`--[no]experimental_android_use_parallel_dex2oat` 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)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios\_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string&gt;` 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)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once&gt;` multiple uses are accumulated
:   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.

`--test_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers&gt;` 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]cc_dotd_files` 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)

`--[no]cc_include_scanning` 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)

`--[no]experimental_filter_library_jar_with_program_jar` 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)

`--[no]experimental_inmemory_dotd_files` 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)

`--[no]experimental_inmemory_jdeps_files` 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)

`--[no]experimental_retain_test_configuration_across_testonly` 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)

`--[no]experimental_unsupported_and_brittle_include_scanning` 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)

`--[no]incremental_dexing` 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)

`--[no]objc_use_dotd_pruning` 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)

`--[no]process_headers_in_dependencies` 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)

`--[no]trim_test_configuration` 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)

Options that affect the verbosity, format or location of logging:

`--toolchain_resolution_debug=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

`--[no]incompatible_default_to_explicit_init_py` 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)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to `auto`, Bazel reruns a test if and only if:

    1. Bazel detects changes in the test or its dependencies,
    2. The test is marked as `external`,
    3. Multiple test runs were requested with `--runs_per_test`, or
    4. 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.

`--[no]experimental_cancel_concurrent_tests` 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)

`--[no]experimental_fetch_all_coverage_outputs` 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)

`--[no]experimental_generate_llvm_lcov` 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)

`--experimental_java_classpath=&lt;off, javabuilder, bazel or bazel_no_fallback&gt;` default: "bazel"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` 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.

`--host_java_launcher=<a build target label&gt;` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string&gt;` multiple uses are accumulated
:   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.

`--[no]incompatible_check_sharding_support` 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)

`--[no]incompatible_exclusive_test_sandboxed` 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)

`--[no]incompatible_strict_action_env` 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)

`--j2objc_translation_flags=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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`

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string&gt;` default: ""
:   The Java language version

`--java_launcher=<a build target label&gt;` 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.

`--java_runtime_version=<a string&gt;` default: "local\_jdk"
:   The Java runtime version

`--javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the Java VM. These options will get added to the VM startup options of each java\_binary target.

`--legacy_main_dex_list_generator=<a build target label&gt;` 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.

`--optimizing_dexer=<a build target label&gt;` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label&gt;` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java\_plugin.

`--proguard_top=<a build target label&gt;` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label&gt;` 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)

`--[no]proto_profile` 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)

`--proto_profile_path=<a build target label&gt;` 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)

`--proto_toolchain_for_cc=<a build target label&gt;` 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)

`--proto_toolchain_for_j2objc=<a build target label&gt;` 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)

`--proto_toolchain_for_java=<a build target label&gt;` 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)

`--proto_toolchain_for_javalite=<a build target label&gt;` 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)

`--protocopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` 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.

`--shell_executable=<a path&gt;` 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)

`--test_arg=<a string&gt;` multiple uses are accumulated
:   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.

`--test_filter=<a string&gt;` 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.

`--test_result_expiration=&lt;an integer&gt;` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.

`--test_sharding_strategy=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt;` 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.

`--tool_java_language_version=<a string&gt;` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string&gt;` default: "remotejdk\_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` 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.

## Dump Options

Options that control the output of the command:

`--[no]action_cache` default: "false"
:   Dump action cache content.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--memory=&lt;memory mode&gt;` default: see description
:   Dump the memory use of the given Skyframe node.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]packages` default: "false"
:   Dump package cache content.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]rule_classes` default: "false"
:   Dump rule classes.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]rules` default: "false"
:   Dump rules, including counts and memory usage (if memory is tracked).

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--skyframe=&lt;off, summary, count, value, deps, rdeps, function_graph, active_directories or active_directories_frontier_deps&gt;` default: "off"
:   Dump the Skyframe graph.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--skykey_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` default: ".\*"
:   Regex filter of SkyKey names to output. Only used with --skyframe=deps, rdeps, function\_graph.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--skylark_memory=<a string&gt;` 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)

## Fetch Options

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

Options that control build execution:

`--[no]all` 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)

`--[no]keep_going` [`-k`] default: "false"
:   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)

`--loading_phase_threads=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

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

`--[no]incompatible_config_setting_private_default_visibility` 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)

`--[no]incompatible_enforce_config_setting_visibility` 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)

Options relating to Bzlmod output and semantics:

`--[no]configure` 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)

`--[no]force` 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)

`--repo=<a string&gt;` multiple uses are accumulated
:   Only fetches the specified repository, which can be either `@apparent_repo_name` or
    `@@canonical_repo_name`. Only works when `--enable_bzlmod` is on.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=&lt;comma-separated list of package names&gt;` multiple uses are accumulated
:   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.

`--[no]fetch` 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.

`--package_path=&lt;colon-separated list of options&gt;` 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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

Options that control build execution:

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_split_coverage_postprocessing` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   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)

`--persistent_android_resource_processor`
:   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)

`--persistent_multiplex_android_dex_desugar`
:   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)

`--persistent_multiplex_android_resource_processor`
:   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)

`--persistent_multiplex_android_tools`
:   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)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string&gt;` 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)

`--android_manifest_merger=&lt;legacy, android or force_android&gt;` 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)

`--android_platforms=<a build target label&gt;` default: ""
:   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)

`--cc_output_directory_tag=<a string&gt;` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string&gt;` 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)

`--coverage_output_generator=<a build target label&gt;` 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)

`--coverage_report_generator=<a build target label&gt;` 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)

`--coverage_support=<a build target label&gt;` 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)

`--custom_malloc=<a build target label&gt;` 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)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&#123;version&#125;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&#123;version\_label&#125;" 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)

`--[no]experimental_prefer_mutual_xcode` 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)

`--extra_execution_platforms=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--extra_toolchains=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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()`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label&gt;` 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)

`--host_compiler=<a string&gt;` 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)

`--host_grte_top=<a label&gt;` 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)

`--host_platform=<a build target label&gt;` 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)

`--[no]incompatible_bazel_test_exec_run_under` 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)

`--[no]incompatible_builtin_objc_strip_action` 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)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` 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)

`--[no]incompatible_enable_apple_toolchain_resolution` 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)

`--[no]incompatible_remove_legacy_whole_archive` 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)

`--[no]incompatible_strip_executable_safely` 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)

`--[no]interface_shared_objects` 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)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--minimum_os_version=<a string&gt;` 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)

`--platform_mappings=<a main workspace-relative path&gt;` default: ""
:   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)

`--platforms=<a build target label&gt;` default: ""
:   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)

`--python_path=<a string&gt;` 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)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--[no]use_platforms_in_apple_crosstool_transition` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xcode_version=<a string&gt;` 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)

`--xcode_version_config=<a build target label&gt;` 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)

Options that control the output of the command:

`--[no]apple_generate_dsym` 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)

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]build_test_dwp` 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)

`--cc_proto_library_header_suffixes=&lt;comma-separated set of options&gt;` 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)

`--cc_proto_library_source_suffixes=&lt;comma-separated set of options&gt;` 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)

`--[no]experimental_proto_descriptor_sets_include_source_info` 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)

`--[no]experimental_save_feature_state` 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)

`--fission=<a set of compilation modes&gt;` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &#123;'fastbuild', 'dbg', 'opt'&#125; 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` 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)

`--[no]android_databinding_use_v3_4_args` 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)

`--android_dynamic_mode=&lt;off, default or fully&gt;` 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)

`--android_manifest_merger_order=&lt;alphabetical, alphabetical_by_configuration or dependency&gt;` 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)

`--[no]android_resource_shrinking` 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)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string&gt;` default: ""
:   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)

`--cs_fdo_absolute_path=<a string&gt;` 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)

`--cs_fdo_instrument=<a string&gt;` 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)

`--cs_fdo_profile=<a build target label&gt;` default: see description
:   The cs\_fdo\_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=&lt;off, default or fully&gt;` 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)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` 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)

`--[no]experimental_android_databinding_v2` 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)

`--[no]experimental_android_resource_shrinking` 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)

`--[no]experimental_android_rewrite_dexes_with_rex` 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)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_objc_fastbuild_options=&lt;comma-separated list of options&gt;` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py\_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` 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)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--fdo_instrument=<a string&gt;` 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)

`--fdo_optimize=<a string&gt;` 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)

`--fdo_prefetch_hints=<a build target label&gt;` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label&gt;` default: see description
:   The fdo\_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` 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)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--host_per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--ios_multi_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios\_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   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)

`--linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos\_sdk\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label&gt;` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` 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)

`--[no]objc_enable_binary_stripping` 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)

`--objccopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--per_file_ltobackendopt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string&gt;` 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)

`--propeller_optimize=<a build target label&gt;` 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)

`--propeller_optimize_absolute_cc_profile=<a string&gt;` default: see description
:   Absolute path name of cc\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string&gt;` default: see description
:   Absolute path name of ld\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]share_native_deps` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=&lt;always, sometimes or never&gt;` 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)

`--stripopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--visionos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xbinary_fdo=<a build target label&gt;` 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)

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

`--[no]check_visibility` 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)

`--[no]desugar_for_android` 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)

`--[no]desugar_java8_libs` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_check_desugar_deps` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--experimental_one_version_enforcement=&lt;off, warning or error&gt;` 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)

`--experimental_strict_java_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]incompatible_disable_native_android_rules` 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)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` 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)

`--python_native_rules_allowlist=<a build target label&gt;` 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)

`--[no]strict_filesets` 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)

`--strict_proto_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--strict_public_imports=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]strict_system_includes` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=&lt;v1, v2, v1_v2 or v4&gt;` 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)

`--[no]device_debug_entitlements` 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)

`--ios_signing_cert_name=<a string&gt;` 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)

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

`--[no]incompatible_disallow_sdk_frameworks_attributes` 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)

`--[no]incompatible_objc_alwayslink_by_default` 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)

`--[no]incompatible_python_disallow_native_rules` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

`--[no]break_build_on_parallel_dex2oat_failure` 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)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100&gt;` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is
    `&#123;resource&#125;=&#123;value&#125;`. If a single positive number is specified as `&#123;value&#125;`
    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 `[-|*]&#123;float&#125;` (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.

`--[no]experimental_android_use_parallel_dex2oat` 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)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios\_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string&gt;` 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)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once&gt;` multiple uses are accumulated
:   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.

`--test_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers&gt;` 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]cc_dotd_files` 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)

`--[no]cc_include_scanning` 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)

`--[no]experimental_filter_library_jar_with_program_jar` 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)

`--[no]experimental_inmemory_dotd_files` 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)

`--[no]experimental_inmemory_jdeps_files` 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)

`--[no]experimental_retain_test_configuration_across_testonly` 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)

`--[no]experimental_unsupported_and_brittle_include_scanning` 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)

`--[no]incremental_dexing` 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)

`--[no]objc_use_dotd_pruning` 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)

`--[no]process_headers_in_dependencies` 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)

`--[no]trim_test_configuration` 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)

Options that affect the verbosity, format or location of logging:

`--toolchain_resolution_debug=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

`--[no]incompatible_default_to_explicit_init_py` 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)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to `auto`, Bazel reruns a test if and only if:

    1. Bazel detects changes in the test or its dependencies,
    2. The test is marked as `external`,
    3. Multiple test runs were requested with `--runs_per_test`, or
    4. 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.

`--[no]experimental_cancel_concurrent_tests` 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)

`--[no]experimental_fetch_all_coverage_outputs` 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)

`--[no]experimental_generate_llvm_lcov` 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)

`--experimental_java_classpath=&lt;off, javabuilder, bazel or bazel_no_fallback&gt;` default: "bazel"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` 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.

`--host_java_launcher=<a build target label&gt;` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string&gt;` multiple uses are accumulated
:   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.

`--[no]incompatible_check_sharding_support` 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)

`--[no]incompatible_exclusive_test_sandboxed` 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)

`--[no]incompatible_strict_action_env` 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)

`--j2objc_translation_flags=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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`

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string&gt;` default: ""
:   The Java language version

`--java_launcher=<a build target label&gt;` 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.

`--java_runtime_version=<a string&gt;` default: "local\_jdk"
:   The Java runtime version

`--javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the Java VM. These options will get added to the VM startup options of each java\_binary target.

`--legacy_main_dex_list_generator=<a build target label&gt;` 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.

`--optimizing_dexer=<a build target label&gt;` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label&gt;` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java\_plugin.

`--proguard_top=<a build target label&gt;` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label&gt;` 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)

`--[no]proto_profile` 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)

`--proto_profile_path=<a build target label&gt;` 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)

`--proto_toolchain_for_cc=<a build target label&gt;` 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)

`--proto_toolchain_for_j2objc=<a build target label&gt;` 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)

`--proto_toolchain_for_java=<a build target label&gt;` 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)

`--proto_toolchain_for_javalite=<a build target label&gt;` 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)

`--protocopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` 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.

`--shell_executable=<a path&gt;` 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)

`--test_arg=<a string&gt;` multiple uses are accumulated
:   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.

`--test_filter=<a string&gt;` 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.

`--test_result_expiration=&lt;an integer&gt;` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.

`--test_sharding_strategy=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt;` 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.

`--tool_java_language_version=<a string&gt;` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string&gt;` default: "remotejdk\_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` 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.

## Help Options

Options that affect the verbosity, format or location of logging:

`--help_verbosity=&lt;long, medium or short&gt;` default: "medium"
:   Select the verbosity of the help command.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--long` [`-l`]
:   Show full description of each option, instead of just its name.

    Expands to:

      `--help_verbosity=long`

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--short`
:   Show only the names of the options, not their types or meanings.

    Expands to:

      `--help_verbosity=short`

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

## Info Options

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

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

`--info_output_type=&lt;stdout or response_proto&gt;` 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)

Options that affect the verbosity, format or location of logging:

`--[no]show_make_env` default: "false"
:   Include the "Make" environment in the output.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

## License Options

## Mobile-install Options

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

Options that control build execution:

`--mode=&lt;classic, classic_internal_test_do_not_use or skylark&gt;` 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)

Options that configure the toolchain used for action execution:

`--adb=<a string&gt;` default: ""
:   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)

Options that control the output of the command:

`--[no]incremental` 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)

`--[no]split_apks` 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)

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

`--adb_arg=<a string&gt;` multiple uses are accumulated
:   Extra arguments to pass to adb. Usually used to designate a device to install to.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--debug_app`
:   Whether to wait for the debugger before starting the app.

    Expands to:

      `--start=DEBUG`

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--device=<a string&gt;` default: ""
:   The adb device serial number. If not specified, the first device will be used.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--start=&lt;no, cold, warm or debug&gt;` 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)

`--start_app`
:   Whether to start the app after installing it.

    Expands to:

      `--start=COLD`

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that affect the verbosity, format or location of logging:

`--incremental_install_verbosity=<a string&gt;` default: ""
:   The verbosity for incremental install. Set to 1 for debug logging.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

## Mod Options

Options that control build execution:

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--loading_phase_threads=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` 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)

Options that control the output of the command:

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--cpu=<a string&gt;` default: ""
:   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)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--platform_suffix=<a string&gt;` 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)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

`--[no]check_visibility` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]strict_filesets` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

`--[no]incompatible_config_setting_private_default_visibility` 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)

`--[no]incompatible_enforce_config_setting_visibility` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

Options relating to the output and semantics of the `mod` subcommand:

`--[no]all_repos` default: "false"
:   For `mod show_repo`: display all repos in the entire workspace.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]all_visible_repos` 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)

`--base_module=&lt;"&lt;root&gt;" 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&gt;` default: "&lt;root&gt;"
:   Specify a module relative to which the specified target repos will be interpreted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--charset=&lt;utf8 or ascii&gt;` 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)

`--[no]cycles` default: "true"
:   Points out dependency cycles inside the displayed tree.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--depth=&lt;an integer&gt;` 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)

`--extension_filter=<a comma-separated list of &lt;extension&gt;s&gt;` 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)

`--extension_info=&lt;hidden, usages, repos or all&gt;` 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)

`--extension_usages=<a comma-separated list of &lt;module&gt;s&gt;` default: ""
:   Specify modules whose extension usages will be displayed in the show\_extension query.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--from=<a comma-separated list of &lt;module&gt;s&gt;` 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 `&lt;root&gt;`.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_builtin` 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)

`--[no]include_unused` 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)

`--output=&lt;text, json, graph, streamed_proto or streamed_jsonproto&gt;` 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)

`--[no]verbose` 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)

Options that affect the verbosity, format or location of logging:

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=&lt;comma-separated list of package names&gt;` multiple uses are accumulated
:   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.

`--[no]fetch` 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.

`--package_path=&lt;colon-separated list of options&gt;` 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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Print\_action Options

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

Miscellaneous options, not otherwise categorized.:

`--print_action_mnemonics=<a string&gt;` multiple uses are accumulated
:   Lists which mnemonics to filter print\_action data by, no filtering takes place when left empty.

## Query Options

Options that control build execution:

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--[no]keep_going` [`-k`] default: "false"
:   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)

`--loading_phase_threads=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` 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)

Options that control the output of the command:

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--cpu=<a string&gt;` default: ""
:   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)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--platform_suffix=<a string&gt;` 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)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

`--[no]check_visibility` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]strict_filesets` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

`--[no]incompatible_config_setting_private_default_visibility` 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)

`--[no]incompatible_enforce_config_setting_visibility` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

Options relating to query output and semantics:

`--aspect_deps=&lt;off, conservative or precise&gt;` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of &#123;xml,proto,record&#125;. '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)

`--[no]consistent_labels` default: "false"
:   If enabled, every query command emits labels as if by the Starlark <code>str</code> function applied to a <code>Label</code> 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)

`--[no]experimental_explicit_aspects` 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)

`--[no]experimental_graphless_query` 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)

`--graph:conditional_edges_limit=&lt;an integer&gt;` 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)

`--[no]graph:factored` 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)

`--graph:node_limit=&lt;an integer&gt;` 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)

`--[no]implicit_deps` 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)

`--[no]include_aspects` 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)

`--[no]incompatible_lexicographical_output` 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)

`--[no]incompatible_package_group_includes_double_slash` 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)

`--[no]infer_universe_scope` 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)

`--[no]line_terminator_null` default: "false"
:   Whether each format is terminated with \0 instead of newline.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]nodep_deps` 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)

`--noorder_results`
:   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)

`--null`
:   Whether each format is terminated with \0 instead of newline.

    Expands to:

      `--line_terminator_null=true`

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--order_output=&lt;no, deps, auto or full&gt;` 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)

`--order_results`
:   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)

`--output=<a string&gt;` 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)

`--output_file=<a string&gt;` default: ""
:   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 <code>bazel query &gt; file</code>.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:default_values` 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)

`--[no]proto:definition_stack` 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)

`--[no]proto:flatten_selects` 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)

`--[no]proto:include_attribute_source_aspects` 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)

`--[no]proto:include_starlark_rule_env` default: "true"
:   Use the starlark environment in the value of the generated $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)

`--[no]proto:include_synthetic_attribute_hash` default: "false"
:   Whether or not to calculate and populate the $internal\_attr\_hash attribute.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:instantiation_stack` 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)

`--[no]proto:locations` default: "true"
:   Whether to output location information in proto output at all.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--proto:output_rule_attrs=&lt;comma-separated list of options&gt;` 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)

`--[no]proto:rule_classes` 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)

`--[no]proto:rule_inputs_and_outputs` default: "true"
:   Whether or not to populate the rule\_input and rule\_output fields.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--query_file=<a string&gt;` default: ""
:   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)

`--[no]relative_locations` 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)

`--[no]strict_test_suite` 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)

`--[no]tool_deps` 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)

`--universe_scope=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--[no]xml:default_values` 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)

`--[no]xml:line_numbers` 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)

Options that affect the verbosity, format or location of logging:

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=&lt;comma-separated list of package names&gt;` multiple uses are accumulated
:   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.

`--[no]fetch` 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.

`--package_path=&lt;colon-separated list of options&gt;` 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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Run Options

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

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

`--[no]portable_paths` default: "false"
:   If true, includes paths to replace in ExecRequest to make the resulting paths portable.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]run` 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)

`--run_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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 <code>name=value</code> pair which sets the value independent of the invocation environment, or by <code>=name</code>, 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]run_in_cwd` default: "false"
:   If true, runs the target in the current working directory instead of the runfile tree.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

`--script_path=<a path&gt;` 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)

Options that affect the verbosity, format or location of logging:

`--[no]omit_run_args` 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)

## Shutdown Options

Options that control the output of the command:

`--iff_heap_size_greater_than=&lt;an integer&gt;` 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)

## Test Options

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

Options that affect the verbosity, format or location of logging:

`--[no]print_relative_test_log_paths` 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)

`--[no]test_verbose_timeout_warnings` 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)

`--[no]verbose_test_summary` default: "true"
:   If true, print additional information (timing, number of failed runs, etc) in the test summary.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

## Vendor Options

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

Options that control build execution:

`--[no]keep_going` [`-k`] default: "false"
:   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)

`--loading_phase_threads=&lt;an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5"&gt;` 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)

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

`--[no]incompatible_config_setting_private_default_visibility` 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)

`--[no]incompatible_enforce_config_setting_visibility` 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)

Options relating to Bzlmod output and semantics:

`--repo=<a string&gt;` multiple uses are accumulated
:   Only vendors the specified repository, which can be either `@apparent_repo_name` or
    `@@canonical_repo_name`. This option can be set multiple times.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=&lt;comma-separated list of package names&gt;` multiple uses are accumulated
:   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.

`--[no]fetch` 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.

`--package_path=&lt;colon-separated list of options&gt;` 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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

Options that control build execution:

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` 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)

`--[no]experimental_split_coverage_postprocessing` 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)

`--[no]experimental_strict_fileset_output` 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)

`--[no]incompatible_modify_execution_info_additive` 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)

`--modify_execution_info=&lt;regex=[+-]key,regex=[+-]key,...&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   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)

`--persistent_android_resource_processor`
:   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)

`--persistent_multiplex_android_dex_desugar`
:   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)

`--persistent_multiplex_android_resource_processor`
:   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)

`--persistent_multiplex_android_tools`
:   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)

`--[no]use_target_platform_for_tests` default: "false"
:   If true, use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string&gt;` 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)

`--android_manifest_merger=&lt;legacy, android or force_android&gt;` 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)

`--android_platforms=<a build target label&gt;` default: ""
:   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)

`--cc_output_directory_tag=<a string&gt;` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string&gt;` 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)

`--coverage_output_generator=<a build target label&gt;` 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)

`--coverage_report_generator=<a build target label&gt;` 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)

`--coverage_support=<a build target label&gt;` 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)

`--custom_malloc=<a build target label&gt;` 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)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&#123;version&#125;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&#123;version\_label&#125;" 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)

`--[no]experimental_prefer_mutual_xcode` 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)

`--extra_execution_platforms=&lt;comma-separated list of options&gt;` default: ""
:   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)

`--extra_toolchains=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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()`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label&gt;` 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)

`--host_compiler=<a string&gt;` 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)

`--host_grte_top=<a label&gt;` 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)

`--host_platform=<a build target label&gt;` 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)

`--[no]incompatible_bazel_test_exec_run_under` 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)

`--[no]incompatible_builtin_objc_strip_action` 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)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` 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)

`--[no]incompatible_enable_apple_toolchain_resolution` 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)

`--[no]incompatible_remove_legacy_whole_archive` 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)

`--[no]incompatible_strip_executable_safely` 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)

`--[no]interface_shared_objects` 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)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--minimum_os_version=<a string&gt;` 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)

`--platform_mappings=<a main workspace-relative path&gt;` default: ""
:   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)

`--platforms=<a build target label&gt;` default: ""
:   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)

`--python_path=<a string&gt;` 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)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--[no]use_platforms_in_apple_crosstool_transition` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xcode_version=<a string&gt;` 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)

`--xcode_version_config=<a build target label&gt;` 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)

Options that control the output of the command:

`--[no]apple_generate_dsym` 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)

`--[no]build_runfile_links` 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)

`--[no]build_runfile_manifests` 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)

`--[no]build_test_dwp` 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)

`--cc_proto_library_header_suffixes=&lt;comma-separated set of options&gt;` 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)

`--cc_proto_library_source_suffixes=&lt;comma-separated set of options&gt;` 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)

`--[no]experimental_proto_descriptor_sets_include_source_info` 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)

`--[no]experimental_save_feature_state` 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)

`--fission=<a set of compilation modes&gt;` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &#123;'fastbuild', 'dbg', 'opt'&#125; 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)

`--[no]incompatible_always_include_files_in_data` 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.0.0/extending/rules#runfiles_features_to_avoid)).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "true"
:   If enabled, the `&#123;binary&#125;.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)

`--incompatible_disable_select_on=&lt;comma-separated set of options&gt;` default: ""
:   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)

`--[no]incompatible_filegroup_runfiles_for_data` 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)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` 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)

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

`--action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=&lt;comma-separated set of options&gt;` default: ""
:   Allowed values for the `--cpu` flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` 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)

`--[no]android_databinding_use_v3_4_args` 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)

`--android_dynamic_mode=&lt;off, default or fully&gt;` 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)

`--android_manifest_merger_order=&lt;alphabetical, alphabetical_by_configuration or dependency&gt;` 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)

`--[no]android_resource_shrinking` 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)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` 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)

`--compilation_mode=&lt;fastbuild, dbg or opt&gt;` [`-c`] default: "fastbuild"
:   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)

`--conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string&gt;` default: ""
:   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)

`--cs_fdo_absolute_path=<a string&gt;` 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)

`--cs_fdo_instrument=<a string&gt;` 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)

`--cs_fdo_profile=<a build target label&gt;` default: see description
:   The cs\_fdo\_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment&gt;` multiple uses are accumulated
:   Each `--define` option specifies an assignment for a build variable.
    In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=&lt;off, default or fully&gt;` 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)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--exec_aspects=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_action_listener=<a build target label&gt;` multiple uses are accumulated
:   Deprecated in favor of aspects. Use `action_listener` to attach an `extra_action` to
    existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` 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)

`--[no]experimental_android_databinding_v2` 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)

`--[no]experimental_android_resource_shrinking` 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)

`--[no]experimental_android_rewrite_dexes_with_rex` 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)

`--[no]experimental_collect_code_coverage_for_generated_files` 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)

`--experimental_objc_fastbuild_options=&lt;comma-separated list of options&gt;` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` 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)

`--experimental_output_paths=&lt;off or strip&gt;` 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)

`--experimental_override_platform_cpu_name=<a 'label=value' assignment&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` 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:

    1. First, in the rare case the `--platforms` option does not have exactly one value, a
       hash of the platforms option is used.
    2. Next, if any shortname for the current platform was registered by
       `--experimental_override_name_platform_in_output_dir`, then that shortname is used.
    3. Then, if `--experimental_use_platforms_in_output_dir_legacy_heuristic` is set, use a
       shortname based off the current platform Label.
    4. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py\_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` 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)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` 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)

`--fdo_instrument=<a string&gt;` 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)

`--fdo_optimize=<a string&gt;` 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)

`--fdo_prefetch_hints=<a build target label&gt;` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label&gt;` default: see description
:   The fdo\_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.
    See also `--host_features`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` 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)

`--host_action_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=&lt;fastbuild, dbg or opt&gt;` 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)

`--host_conlyopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string&gt;` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string&gt;` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration.
    Specifying `-&#123;feature&#125;` will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--host_per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` 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)

`--[no]incompatible_merge_genfiles_directory` 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)

`--[no]incompatible_target_cpu_from_platform` 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)

`--[no]instrument_test_targets` 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)

`--instrumentation_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--ios_multi_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios\_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   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)

`--linkopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string&gt;` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin\_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos\_sdk\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label&gt;` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` 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)

`--[no]objc_enable_binary_stripping` 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)

`--objccopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--per_file_copt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--per_file_ltobackendopt=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string&gt;` 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)

`--propeller_optimize=<a build target label&gt;` 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)

`--propeller_optimize_absolute_cc_profile=<a string&gt;` default: see description
:   Absolute path name of cc\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string&gt;` default: see description
:   Absolute path name of ld\_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command&gt;` 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)

`--[no]share_native_deps` 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)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=&lt;always, sometimes or never&gt;` 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)

`--stripopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--visionos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--xbinary_fdo=<a build target label&gt;` 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)

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

`--[no]check_visibility` 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)

`--[no]desugar_for_android` 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)

`--[no]desugar_java8_libs` 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)

`--[no]enforce_constraints` 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)

`--[no]experimental_check_desugar_deps` 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)

`--[no]experimental_enforce_transitive_visibility` 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)

`--experimental_one_version_enforcement=&lt;off, warning or error&gt;` 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)

`--experimental_strict_java_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]incompatible_check_testonly_for_output_files` 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)

`--[no]incompatible_disable_native_android_rules` 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)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` 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)

`--python_native_rules_allowlist=<a build target label&gt;` 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)

`--[no]strict_filesets` 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)

`--strict_proto_deps=&lt;off, warn, error, strict or default&gt;` 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)

`--strict_public_imports=&lt;off, warn, error, strict or default&gt;` 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)

`--[no]strict_system_includes` 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)

`--target_environment=<a build target label&gt;` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an
    [`environment` rule](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/analysis/constraints/EnvironmentRule.java). If specified, all top-level targets must be compatible with this
    environment.

    See also `--platforms`.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=&lt;v1, v2, v1_v2 or v4&gt;` 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)

`--[no]device_debug_entitlements` 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)

`--ios_signing_cert_name=<a string&gt;` 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)

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

`--[no]incompatible_disallow_sdk_frameworks_attributes` 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)

`--[no]incompatible_objc_alwayslink_by_default` 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)

`--[no]incompatible_python_disallow_native_rules` 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)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` 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)

`--analysis_testing_deps_limit=&lt;an integer&gt;` 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)

`--[no]break_build_on_parallel_dex2oat_failure` 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)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100&gt;` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is
    `&#123;resource&#125;=&#123;value&#125;`. If a single positive number is specified as `&#123;value&#125;`
    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 `[-|*]&#123;float&#125;` (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.

`--[no]experimental_android_use_parallel_dex2oat` 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)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios\_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string&gt;` 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)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')&gt;` 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)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once&gt;` multiple uses are accumulated
:   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.

`--test_env=<a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable&gt;` multiple uses are accumulated
:   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.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers&gt;` 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]cc_dotd_files` 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)

`--[no]cc_include_scanning` 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)

`--[no]experimental_filter_library_jar_with_program_jar` 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)

`--[no]experimental_inmemory_dotd_files` 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)

`--[no]experimental_inmemory_jdeps_files` 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)

`--[no]experimental_retain_test_configuration_across_testonly` 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)

`--[no]experimental_unsupported_and_brittle_include_scanning` 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)

`--[no]incremental_dexing` 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)

`--[no]objc_use_dotd_pruning` 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)

`--[no]process_headers_in_dependencies` 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)

`--[no]trim_test_configuration` 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)

Options that affect the verbosity, format or location of logging:

`--toolchain_resolution_debug=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths&gt;` 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)

`--[no]verbose_visibility_errors` 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)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias&gt;` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
    `&#123;key&#125;=&#123;value&#125;` as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`non_configurable`](#metadata_tag_NON_CONFIGURABLE)

`--[no]incompatible_default_to_explicit_init_py` 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)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to `auto`, Bazel reruns a test if and only if:

    1. Bazel detects changes in the test or its dependencies,
    2. The test is marked as `external`,
    3. Multiple test runs were requested with `--runs_per_test`, or
    4. 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.

`--[no]experimental_cancel_concurrent_tests` 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)

`--[no]experimental_fetch_all_coverage_outputs` 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)

`--[no]experimental_generate_llvm_lcov` 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)

`--experimental_java_classpath=&lt;off, javabuilder, bazel or bazel_no_fallback&gt;` default: "bazel"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` 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.

`--host_java_launcher=<a build target label&gt;` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string&gt;` multiple uses are accumulated
:   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.

`--[no]incompatible_check_sharding_support` 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)

`--[no]incompatible_exclusive_test_sandboxed` 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)

`--[no]incompatible_strict_action_env` 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)

`--j2objc_translation_flags=&lt;comma-separated list of options&gt;` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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`

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string&gt;` default: ""
:   The Java language version

`--java_launcher=<a build target label&gt;` 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.

`--java_runtime_version=<a string&gt;` default: "local\_jdk"
:   The Java runtime version

`--javacopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the Java VM. These options will get added to the VM startup options of each java\_binary target.

`--legacy_main_dex_list_generator=<a build target label&gt;` 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.

`--optimizing_dexer=<a build target label&gt;` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label&gt;` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java\_plugin.

`--proguard_top=<a build target label&gt;` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label&gt;` 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)

`--[no]proto_profile` 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)

`--proto_profile_path=<a build target label&gt;` 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)

`--proto_toolchain_for_cc=<a build target label&gt;` 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)

`--proto_toolchain_for_j2objc=<a build target label&gt;` 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)

`--proto_toolchain_for_java=<a build target label&gt;` 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)

`--proto_toolchain_for_javalite=<a build target label&gt;` 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)

`--protocopt=<a string&gt;` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` 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.

`--shell_executable=<a path&gt;` 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)

`--test_arg=<a string&gt;` multiple uses are accumulated
:   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.

`--test_filter=<a string&gt;` 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.

`--test_result_expiration=&lt;an integer&gt;` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.

`--test_sharding_strategy=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt;` 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.

`--tool_java_language_version=<a string&gt;` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string&gt;` default: "remotejdk\_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` 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.

## Version Options

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

`--[no]gnu_format` 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)

### Option Effect Tags

|  |  |
| --- | --- |
| `unknown` | This option has unknown, or undocumented, effect. |
| `no_op` | This option has literally no effect. |
| `loses_incremental_state` | 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. |
| `changes_inputs` | This option actively changes the inputs that bazel considers for the build, such as filesystem restrictions, repository versions, or other options. |
| `affects_outputs` | 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. |
| `build_file_semantics` | This option affects the semantics of BUILD or .bzl files. |
| `bazel_internal_configuration` | This option affects settings of bazel-internal machinery. This tag does not, on its own, mean that build artifacts are affected. |
| `loading_and_analysis` | This option affects the loading and analysis of dependencies, and the building of the dependency graph. |
| `execution` | This option affects the execution phase, such as sandboxing or remote execution related options. |
| `host_machine_resource_optimizations` | 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. |
| `eagerness_to_exit` | This option changes how eagerly bazel will exit from a failure, where a choice between continuing despite the failure and ending the invocation exists. |
| `bazel_monitoring` | This option is used to monitor bazel's behavior and performance. |
| `terminal_output` | This option affects bazel's terminal output. |
| `action_command_lines` | This option changes the command line arguments of one or more build actions. |
| `test_runner` | This option changes the testrunner environment of the build. |

### Option Metadata Tags

|  |  |
| --- | --- |
| `experimental` | This option triggers an experimental feature with no guarantees of functionality. |
| `incompatible_change` | This option triggers a breaking change. Use this option to test your migration readiness or get early access to the new feature |
| `deprecated` | This option is deprecated. It might be that the feature it affects is deprecated, or that another method of supplying the information is preferred. |
| `non_configurable` | This option cannot be changed in a transition or be used in a select() statement. |



