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

```
bazel [<startup options>] <command> [<args>]
```

or

```
bazel [<startup options>] <command> [<args>] -- [<target patterns>]
```

See the [User's Guide](/versions/8.3.1/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:

```
--<option>=<value>
--<option> <value>
```

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.

```
-<short_form> <value>
```

Boolean options can be enabled as follows:

```
--<option>
--<option>=[true|yes|1]
```

and disabled as follows:

```
--no<option>
--<option>=[false|no|0]
```

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

```
--<option>=[true|yes|1]
```

or force-disabled as follows:

```
--no<option>
--<option>=[false|no|0]
```

## Commands

|  |  |
| --- | --- |
| [`analyze-profile`](#analyze-profile) | Analyzes build profile data. |
| [`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. |
| [`sync`](#sync) | Syncs all repositories specified in the workspace file |
| [`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=<path>` 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=<an integer>` default: "30"
:   The amount of time the client waits for each attempt to connect to the server

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--digest_function=<hash function>` default: see description
:   The hash function to use when computing file digests.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

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

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING), [`execution`](#effect_tag_EXECUTION)

`--[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)

`--failure_detail_out=<path>` default: see description
:   If set, specifies a location to write a failure\_detail protobuf message if the server experiences a failure and cannot report it via gRPC, as normal. Otherwise, the location will be \$\{OUTPUT\_BASE\}/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={-1,0,1,2,3,4,5,6,7}` 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=<an integer>` default: "120"
:   The maximum amount of time the client waits to connect to the server

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

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

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

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

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--output_base=<path>` default: see description
:   If set, specifies the output location to which all build output will be written. Otherwise, the location will be \$\{OUTPUT\_ROOT\}/\_blaze\_\$\{USER\}/\$\{MD5\_OF\_WORKSPACE\_ROOT\}. 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=<path>` 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=<path>` default: see description
:   The location to write the server's JVM's output. If unset then defaults to a location in output\_base.

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

`--[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 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]watchfs` default: "false"
:   If true, bazel tries to use the operating system's file watch service for local changes instead of scanning every file for a change.

    Tags:
    [`deprecated`](#metadata_tag_DEPRECATED)

`--[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)

Miscellaneous options, not otherwise categorized.:

`--host_jvm_args=<jvm_arg>` 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.

`--server_javabase=<jvm path>` 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>` 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=<an integer>` default: "5"
:   The maximum number of attempts to retry a download error. If set to 0, retries are disabled.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

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

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--http_connector_attempts=<an integer>` default: "8"
:   The maximum number of attempts for http downloads.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

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

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--http_max_parallel_downloads=<an integer>` default: "8"
:   The maximum number parallel http downloads.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

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

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]incompatible_disable_native_repo_rules` default: "false"
:   If false, native repo rules can be used in WORKSPACE; otherwise, Starlark repo rules must be used instead. Native repo rules include local\_repository, new\_local\_repository, and local\_config\_platform. When this flag is set, the local\_config\_platform built-in module is also unavailable in Bzlmod; use `@platforms//host` instead.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache=<a path>` default: see description
:   Specifies the location of the repo contents cache, which contains fetched repo directories shareable across workspaces. An empty string as argument requests the repo contents cache to be disabled, otherwise the default of '&lt;--repository\_cache&gt;/contents' is used. Note that this means setting '--repository\_cache=' would by default disable the repo contents cache as well, unless '--repo\_contents\_cache=&lt;some\_path&gt;' is also set.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

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

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache_gc_max_age=<An immutable length of time.>` default: "14d"
:   Specifies the amount of time an entry in the repo contents cache can stay unused before it's garbage collected. If set to zero, garbage collection is disabled.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repository_cache=<a path>` default: see description
:   Specifies the cache location of the downloaded values obtained during the fetching of external repositories. An empty string as argument requests the cache to be disabled, otherwise the default of '&lt;--output\_user\_root&gt;/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\{,\_and\_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

Options that control build execution:

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--gc_thrashing_threshold=<an integer in 0-100 range>` default: "100"
:   The percent of tenured space occupied (0-100) above which GcThrashingDetector considers memory pressure events against its limits (--gc\_thrashing\_limits). If set to 100, GcThrashingDetector is disabled.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

Options that configure the toolchain used for action execution:

`--[no]incompatible_enable_proto_toolchain_resolution` default: "false"
:   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=<an integer>` default: "-1"
:   Maximum number of open files allowed during BEP artifact upload.

    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.

`--remote_download_minimal`
:   Does not download any remote build outputs to the local machine. This flag is an alias for --remote\_download\_outputs=minimal.

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_symlink_template=<a string>` 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 \{hash} and \{size\_bytes} 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.

`--repo_env=<a 'name=value' assignment with an optional value part>` 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 configuration information can be passed to repositories through options without invalidating the action graph.

    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]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]enable_bzlmod` default: "true"
:   If true, enables the Bzlmod dependency management system, taking precedence over WORKSPACE. See https://bazel.build/docs/bzlmod for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]enable_workspace` default: "false"
:   If true, enables the legacy WORKSPACE system for external dependencies. See https://bazel.build/external/overview for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[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_cc_static_library` default: "false"
:   If set to true, rule attributes and Starlark API methods needed for the rule cc\_static\_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/8.3.1/rules/lib/globals/module#use\_extension"><code>use\_extension</code></a> function.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_java_library_export` default: "false"
:   If enabled, experimental\_java\_library\_export\_do\_not\_use module is available.

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

`--[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]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=<comma-separated set of options>` default: "+@rules\_python,+java\_common,+JavaInfo,+JavaPluginInfo,ProguardSpecProvider,java\_binary,java\_import,java\_library,java\_plugin,java\_test,java\_runtime,java\_toolchain,java\_package\_configuration,@com\_google\_protobuf,@rules\_shell,+@rules\_android"
:   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_depset_for_libraries_to_link_getter` default: "true"
:   When true, Bazel no longer returns a list from linking\_context.libraries\_to\_link but returns a depset instead.

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

`--[no]incompatible_disable_autoloads_in_main_repo` default: "false"
:   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 access providers on 'target' objects via field syntax. Use provider-key syntax instead. For example, instead of using `ctx.attr.dep.my\_info` to access `my\_info` from inside a rule implementation function, use `ctx.attr.dep[MyInfo]`. 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)

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

`--[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_disallow_struct_provider_syntax` default: "true"
:   If set to true, rule implementation functions may not return a struct. They must instead return a list of provider instances.

    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_java_common_parameters` default: "true"
:   If set to true, the output\_jar, and host\_javabase parameters in pack\_sources and host\_javabase in compile will all be removed.

    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_merge_fixed_and_default_shell_env` default: "true"
:   If enabled, actions registered with ctx.actions.run and ctx.actions.run\_shell with both 'env' and 'use\_default\_shell\_env = True' specified will use an environment obtained from the default shell environment by overriding with the values passed in to 'env'. If disabled, the value of 'env' is completely ignored in this case.

    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 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_require_linker_input_cc_api` default: "true"
:   If set to true, rule create\_linking\_context will require linker\_inputs instead of libraries\_to\_link. The old getters of linking\_context will also be disabled and just linker\_inputs will be available.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`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_top_level_aspects_require_providers` default: "true"
:   If set to true, the top level aspect will honor its required providers and only run on top level targets whose rules' advertised providers satisfy the required providers of the aspect.

    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>` 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=<an integer>` default: "3500"
:   The maximum depth of the graph internal to a depset (also known as NestedSet), above which the depset() constructor will fail.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--repositories_without_autoloads=<comma-separated set of options>` 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>` multiple uses are accumulated
:   Specified the module versions in the form of `<module1>@<version1>,<module2>@<version2>` that will be allowed in the resolved dependency graph even if they are declared yanked in the registry where they come from (if they are not coming from a NonRegistryOverride). Otherwise, yanked versions will cause the resolution to fail. You can also define allowed yanked version 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=<error, warning or off>` default: "error"
:   Check bazel version compatibility of Bazel modules. Valid values are `error` to escalate it to a resolution failure, `off` to disable the check, or `warning` to print a warning when mismatch detected.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--override_module=<an equals-separated mapping of module name to path>` multiple uses are accumulated
:   Override a module with a local path in the form of &lt;module name&gt;=&lt;path&gt;. 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>` 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>` 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=<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=<an integer, >= 0>` default: "10"
:   Flag for advanced configuration of Bazel's internal Skyframe engine. If Bazel detects its retained heap percentage usage exceeds the threshold set by --skyframe\_high\_water\_mark\_threshold, when a full GC event occurs, it will drop unnecessary temporary Skyframe state, up to this many times per invocation. Defaults to 10. Zero means that full GC events will never trigger drops. If the limit is reached, Skyframe state will no longer be dropped when a full GC event occurs and that retained heap percentage threshold is exceeded.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

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

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

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

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[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>` 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>` 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>` 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=<comma-separated list of options>` multiple uses are accumulated
:   Specifies a list of notification keywords to be added the default set of keywords published to BES ("command\_name=&lt;command\_name&gt; ", "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=<An immutable length of time.>` default: "10m"
:   Specifies how long bazel should wait for the BES/BEP upload to complete while OOMing. This flag ensures termination when the JVM is severely GC thrashing and cannot make progress on any user thread.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_upload_mode=<wait_for_upload_complete, nowait_for_upload_complete or fully_async>` default: "wait\_for\_upload\_complete"
:   Specifies whether the Build Event Service upload should block the build completion or should end the invocation immediately and finish the upload in the background. Either 'wait\_for\_upload\_complete' (default), 'nowait\_for\_upload\_complete', or 'fully\_async'.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--build_event_binary_file=<a string>` 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=<wait_for_upload_complete, nowait_for_upload_complete or fully_async>` default: "wait\_for\_upload\_complete"
:   Specifies whether the Build Event Service upload for --build\_event\_binary\_file should block the build completion or should end the invocation immediately and finish the upload in the background. Either 'wait\_for\_upload\_complete' (default), 'nowait\_for\_upload\_complete', or 'fully\_async'.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--build_event_json_file=<a string>` 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=<wait_for_upload_complete, nowait_for_upload_complete or fully_async>` default: "wait\_for\_upload\_complete"
:   Specifies whether the Build Event Service upload for --build\_event\_json\_file should block the build completion or should end the invocation immediately and finish the upload in the background. Either 'wait\_for\_upload\_complete' (default), 'nowait\_for\_upload\_complete', or 'fully\_async'.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` 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=<wait_for_upload_complete, nowait_for_upload_complete or fully_async>` default: "wait\_for\_upload\_complete"
:   Specifies whether the Build Event Service upload for --build\_event\_text\_file should block the build completion or should end the invocation immediately and finish the upload in the background. Either 'wait\_for\_upload\_complete' (default), 'nowait\_for\_upload\_complete', or 'fully\_async'.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

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

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[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)

`--[no]experimental_build_event_fully_resolve_fileset_symlinks` default: "false"
:   If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental\_build\_event\_expand\_filesets.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_output_group_mode=<an output group name followed by an OutputGroupFileMode, e.g. default=both>` 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=<An immutable length of time.>` default: "1s"
:   Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--experimental_build_event_upload_strategy=<a string>` default: see description
:   Selects how to upload artifacts referenced in the build event protocol.

    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: "false"
:   If enabled, the profiler collects worker's aggregated resource data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

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

`--experimental_profile_additional_tasks=<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, 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, wasm_load, wasm_exec or unknown>` 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>` 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>` 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=<0 <= an integer <= 6>` default: "3"
:   The logging level.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

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

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--profile=<a path>` default: see description
:   If set, profile Bazel and write data to the specified file. Use bazel analyze-profile to analyze the profile.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

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

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[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=<failure, success or all>` default: "failure"
:   Choose when to print remote execution messages. Valid values are `failure`, to print only on failures, `success` to print only on successes and `all` to print always.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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>` 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>` 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=<Convert list of comma separated event kind to list of filters>` 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)

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

`--experimental_resolved_file_instead_of_workspace=<a string>` default: ""
:   If non-empty read the specified resolved file instead of the WORKSPACE file

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Remote caching and execution options:

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

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_remote_capture_corrupted_outputs=<a path>` 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>` 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:<url-index>:<header-key>` qualifier where the `<url-index>` is a 0-based position of the URL inside the FetchBlobRequest's `uris` field. The URL-specific headers should take precedence over the global headers.

`--[no]experimental_remote_execution_keepalive` default: "false"
:   Whether to use keepalive for remote execution calls.

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[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.

`--[no]experimental_remote_merkle_tree_cache` default: "false"
:   If set to true, Merkle tree calculations will be memoized to improve the remote cache hit checking speed. The memory foot print of the cache is controlled by --experimental\_remote\_merkle\_tree\_cache\_size.

`--experimental_remote_merkle_tree_cache_size=<a long integer>` default: "1000"
:   The number of Merkle trees to memoize to improve the remote cache hit checking speed. Even though the cache is automatically pruned according to Java's handling of soft references, out-of-memory errors can occur if set too high. If set to 0 the cache size is unlimited. Optimal value varies depending on project's size. Default to 1000.

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

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

`--experimental_worker_for_repo_fetching=<off, platform, virtual or auto>` default: "auto"
:   The threading mode to use for repo fetching. If set to 'off', no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.

`--[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]remote_accept_cached` default: "true"
:   Whether to accept remotely cached action results.

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

`--remote_bytestream_uri_prefix=<a string>` default: see description
:   The hostname and instance name to be used in bytestream:// URIs that are written into build event streams. This option can be set when builds are performed using a proxy, which causes the values of --remote\_executor and --remote\_instance\_name to no longer correspond to the canonical name of the remote execution service. When not set, it will default to "\$\{hostname\}/\$\{instance\_name\}".

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

`--[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>` 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>` 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_default_platform_properties=<a string>` default: ""
:   Set the default platform properties to be set for the remote execution API, if the execution platform does not already set remote\_execution\_properties. This value will also be used if the host platform is selected as the execution platform for remote execution.

`--remote_download_regex=<a valid Java regular expression>` 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>` 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>` 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=<an integer>` 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>` 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>` 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>` 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>` 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>` default: "local"
:   Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.

`--remote_max_connections=<an integer>` default: "100"
:   Limit the max number of concurrent connections to remote cache/executor. By default the value is 100. Setting this to 0 means no limitation.
    For HTTP remote cache, one TCP connection could handle one request at one time, so Bazel could make up to --remote\_max\_connections concurrent requests.
    For gRPC remote cache/executor, one gRPC channel could usually handle 100+ concurrent requests, 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>` 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=<an integer>` default: "0"
:   The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.

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

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

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

`--[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>` multiple uses are accumulated
:   Custom key-value string pairs to supply in a build event.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--color=<yes, no or auto>` default: "auto"
:   Use terminal controls to colorize output.

`--config=<a string>` 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=<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.>` multiple uses are accumulated
:   Configures a credential helper conforming to the <a href="https://github.com/EngFlow/credential-helper-spec">Credential Helper Specification</a> 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 https://blog.engflow.com/2023/10/09/configuring-bazels-credential-helper/ for instructions.

`--credential_helper_cache_duration=<An immutable length of time.>` default: "30m"
:   The default duration for which credentials supplied by a credential helper are cached if the helper does not provide when the credentials expire.

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

`--curses=<yes, no or auto>` default: "auto"
:   Use terminal cursor controls to minimize scrolling output.

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

`--[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_disk_cache_gc_idle_delay=<An immutable length of time.>` default: "5m"
:   How long the server must remain idle before a garbage collection of the disk cache occurs. To specify the garbage collection policy, set --experimental\_disk\_cache\_gc\_max\_size and/or --experimental\_disk\_cache\_gc\_max\_age.

`--experimental_disk_cache_gc_max_age=<An immutable length of time.>` default: "0"
:   If set to a positive value, the disk cache will be periodically garbage collected to remove entries older than this age. If set in conjunction with --experimental\_disk\_cache\_gc\_max\_size, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental\_disk\_cache\_gc\_idle\_delay flag.

`--experimental_disk_cache_gc_max_size=<a size in bytes, optionally followed by a K, M, G or T multiplier>` default: "0"
:   If set to a positive value, the disk cache will be periodically garbage collected to stay under this size. If set in conjunction with --experimental\_disk\_cache\_gc\_max\_age, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental\_disk\_cache\_gc\_idle\_delay flag.

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

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[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)

`--[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=<comma-separated list of options>` default: "https://www.googleapis.com/auth/cloud-platform"
:   A comma-separated list of Google Cloud authentication scopes.

`--google_credentials=<a string>` 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 https://cloud.google.com/docs/authentication for details. Disabled by default.

`--grpc_keepalive_time=<An immutable length of time.>` default: see description
:   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. Times are treated as second granularity; it is an error to set a value less than one second. By default, keep-alive pings are disabled. You should coordinate with the service owner before enabling this setting. For example to set a value of 30 seconds to this flag, it should be done as this --grpc\_keepalive\_time=30s

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

`--[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)

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

`--inject_repository=<an equals-separated mapping of repository name to path>` multiple uses are accumulated
:   Adds a new repository with a local path in the form of &lt;repository name&gt;=&lt;path&gt;. 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>` 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=<an equals-separated mapping of repository name to path>` multiple uses are accumulated
:   Override a repository with a local path in the form of &lt;repository name&gt;=&lt;path&gt;. 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>` 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>` default: see description
:   Specify a path to a TLS certificate that is trusted to sign server certificates.

`--tls_client_certificate=<a string>` 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>` 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=<an integer>` default: "8"
:   Number of concurrent actions shown in the detailed progress bar; each action is shown on a separate line. The progress bar always shows at least one one, all numbers less than 1 are mapped to 1.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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.

## Analyze-profile Options

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

`--dump=<text or raw>` [`-d`] default: see description
:   output full profile data dump either in human-readable 'text' format or script-friendly 'raw' format.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

## Aquery Options

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to query output and semantics:

`--aspect_deps=<off, conservative or precise>` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of {xml,proto,record}. '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=<an integer>` default: "512"
:   The maximum length of the label string for a graph node in the output. Longer labels will be truncated; -1 means no truncation. This option is only applicable to --output=graph.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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>` 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>` 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_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=<comma-separated list of options>` default: "all"
:   Comma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to --output=proto.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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>` 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=<comma-separated list of options>` 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_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

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

`--[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: "false"
:   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=<regex=[+-]key,regex=[+-]key,...>` 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.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will 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>` 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=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android\_binary rules. Flag to help thetransition 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>` 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)

`--apple_crosstool_top=<a build target label>` default: "@bazel\_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

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

`--coverage_output_generator=<a build target label>` default: "@bazel\_tools//tools/test:lcov\_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` default: "@bazel\_tools//tools/test:coverage\_report\_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` 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>` 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)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86\_64 will add 'x86\_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:\{version}" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:\{version\_label}" 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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>` 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: "false"
:   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_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')>` 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')>` 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>` 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>` 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), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` 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>` 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)

`--python_top=<a build target label>` default: see description
:   The label of a py\_runtime representing 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')>` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

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

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel\_tools//tools/cpp:host\_xcodes"
:   The label of the xcode\_config rule to be used for selecting the Xcode version in the build configuration.

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

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=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc\_proto\_library creates.

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

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc\_proto\_library creates.

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

`--[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>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of {'fastbuild', 'dbg', 'opt'} 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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<off, default or fully>` default: "off"
:   Determines whether C++ deps of Android rules will be linked dynamically when a cc\_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

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

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[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=<comma-separated list of options>` 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=<fastbuild, dbg or opt>` [`-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>` 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>` 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>` default: ""
:   The target CPU.

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

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` 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>` 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=<off, default or fully>` default: "default"
:   Determines whether C++ binaries will be linked dynamically. 'default' means Bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

`--[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)

`--experimental_action_listener=<a build target label>` 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=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` 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>` 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>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_conlyopt=<a string>` 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>` 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>` default: ""
:   The host CPU.

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

`--host_cxxopt=<a string>` 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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

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

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

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

`--host_linkopt=<a string>` 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')>` 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>` 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 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]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>` 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')>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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=<comma-separated list of options>` 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')>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation\_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` 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=<comma-separated list of options>` 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')>` 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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')>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When enabled, enforce that a java\_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[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_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    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]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python\_version=PY2, srcs\_version=PY2, and srcs\_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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>` 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=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto\_library target explicitly declares all directly used targets as dependencies.

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

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto\_library target explicitly declares all targets used in 'import public' as exported.

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

`--[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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1\_v2"
:   Implementation to use to sign APKs

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

`--[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>` 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_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

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

`--[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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[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>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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>` 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')>` 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>` 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>` 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. 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>` 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]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: "false"
:   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_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc\_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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.

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

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[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)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible\_py3\_is\_default`.

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

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py\_binary` and `py\_test` targets that do not set their `python\_version` (or `default\_python\_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible\_py2\_outputs\_are\_suffixed`.

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

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python\_top.

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

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py\_binary` and `py\_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

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

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: "false"
:   If true, then Blaze will cancel concurrently running tests on the first successful run. 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)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

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

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

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

`--[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>` default: see description
:   The Java launcher used by tools that are executed during a build.

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

`--host_jvmopt=<a string>` 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: "false"
:   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=<comma-separated list of options>` 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.

`--[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>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.

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

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

`--jvmopt=<a string>` 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>` 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>` default: see description
:   Specifies a binary to use to do dexing without sharding.

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

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

`--proto_compiler=<a build target label>` default: "@bazel\_tools//tools/proto:protoc"
:   The label of the proto-compiler.

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

`--[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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<an integer>` 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=<explicit, disabled or forced=k where k is the number of shards to enforce>` default: "explicit"
:   Specify strategy for test sharding: 'explicit' to only use sharding if the 'shard\_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard\_count' BUILD attribute.

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

`--tool_java_runtime_version=<a string>` 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]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=<an integer>` default: "1000"
:   How many milliseconds should local execution be delayed, if remote execution was faster during a build at least once?

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

`--dynamic_local_strategy=<a '[name=]value1[,..,valueN]' assignment>` 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>` 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)

`--experimental_docker_image=<a string>` 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>` 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\_cpu\_resources flag.
    If this flag is 0, all actions are scheduled locally immediately. If > 0, the amount of actions scheduled locally is limited by the number of CPUs available. If < 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=<An immutable length of time.>` default: "0"
:   If >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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` default: "4"
:   If 0, delete sandbox trees as soon as an action completes (causing completion of the action to be delayed). If greater than zero, execute the deletion of such threes on an asynchronous thread pool that has size 1 when the build is running and grows to the size specified by this flag when the server is idle.

    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>` 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 ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` multiple uses are accumulated
:   If > 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=<an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.>` default: "0"
:   If > 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)

`--[no]experimental_split_xml_generation` default: "true"
:   If this flag is set, and a test action does not generate a test.xml file, then Bazel uses a separate action to generate a dummy test.xml file containing the test log. Otherwise, Bazel generates a test.xml as part of the test action.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_total_worker_memory_limit_mb=<an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.>` default: "0"
:   If this limit is greater than zero idle workers might be killed if the total memory usage of all workers exceed the limit.

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

`--[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_semaphore_for_jobs` default: "true"
:   If set to true, additionally use semaphore to limit number of concurrent jobs.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`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>` 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=<comma-separated set of options>` default: see description
:   If non-empty, only allow using persistent workers with the given worker key mnemonic.

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

`--[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=<an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.>` default: "0"
:   If this limit is greater than zero, workers might be killed if the memory usage of the worker exceeds the limit. If not used together with dynamic execution and `--experimental\_dynamic\_ignore\_local\_signals=9`, this may crash your build.

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

`--experimental_worker_metrics_poll_interval=<An immutable length of time.>` default: "5s"
:   The interval between collecting worker metrics and possibly attempting evictions. Cannot effectively be less than 1s for performance reasons.

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

`--[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>` 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=<comma-separated list of options>` 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_sandbox_hermetic_tmp` default: "true"
:   If set to true, each Linux sandbox will have its own dedicated empty directory mounted as /tmp rather than sharing /tmp with the host filesystem. Use --sandbox\_add\_mount\_pair=/tmp to keep seeing the host's /tmp in all sandboxes.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]incompatible_use_new_cgroup_implementation` default: "false"
:   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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` [`-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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` 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>` 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_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=<an absolute path>` 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: https://bazel.build/extending/platforms#skipping-incompatible-targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--spawn_strategy=<comma-separated list of options>` 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>` 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 '<RegexFilter>=value[,value]' assignment>` 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>` 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=<[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">` 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=<[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">` 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 iff 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=<comma-separated list of options>` 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 https://bazel.build/extending/rules#validation\_actions

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

`--serialized_frontier_profile=<a string>` 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=<comma-separated list of options>` 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. &lt;bzl-file-label&gt;%&lt;aspect\_name&gt;, 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=<an integer>` 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 eventConvenienceSymlinksIdentified to the BuildEventProtocol. If the value is true, the BuildEventProtocol will have an entry for convenienceSymlinksIdentified, listing all of the convenience symlinks created in your workspace. If false, then the convenienceSymlinksIdentified entry in the BuildEventProtocol 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.

`--remote_download_minimal`
:   Does not download any remote build outputs to the local machine. This flag is an alias for --remote\_download\_outputs=minimal.

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_symlink_template=<a string>` 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 \{hash} and \{size\_bytes} 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.

`--symlink_prefix=<a string>` default: see description
:   The prefix that is prepended to any of the convenience symlinks that are created after a build. If omitted, the default value is the name of the build tool followed by a hyphen. If '/' is passed, then no symlinks are created and no warning is emitted. Warning: the special functionality for '/' will be deprecated soon; use --experimental\_convenience\_symlinks=ignore instead.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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)

`--[no]incompatible_legacy_local_fallback` default: "false"
:   If set to true, enables the legacy implicit fallback from sandboxed to local strategy. This flag will eventually default to false and then become a no-op. Use --strategy, --spawn\_strategy, or --dynamic\_local\_strategy to configure fallbacks instead.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--sandbox_block_path=<a string>` 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>` 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)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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>` 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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` 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>` default: ""
:   Specifies which strategy to use when running tests.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--test_tmpdir=<a path>` 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>` 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.

`--[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>` 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\_working\_set 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)

`--experimental_working_set=<comma-separated list of options>` default: ""
:   The working set for Skyfocus. Specify as comma-separated workspace root-relative paths. This is a stateful flag. Defining a working set persists it for subsequent invocations, until it is redefined with a new set.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_cpu_resources=<an integer, or "HOST_CPUS", optionally followed by [-|*]&lt;float&gt;.>` default: "HOST\_CPUS"
:   Explicitly set the total number of local CPU cores available to Bazel to spend on build actions executed locally. Takes an integer, or "HOST\_CPUS", optionally followed by [-|\*]&lt;float&gt; (eg. HOST\_CPUS\*.5 to use half the available CPU cores). By default, ("HOST\_CPUS"), Bazel will query system configuration to estimate the number of CPU cores available.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_extra_resources=<a named float, 'name=value'>` multiple uses are accumulated
:   Set the number of extra resources available to Bazel. Takes in a string-float pair. Can be used multiple times to specify multiple types of extra resources. Bazel will limit concurrently running actions based on the available extra resources and the extra resources required. Tests can declare the amount of extra resources they need by using a tag of the "resources:&lt;resoucename&gt;:&lt;amount&gt;" format. Available CPU, RAM and resources cannot be set with this flag.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_ram_resources=&lt;an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]&lt;float&gt;.&gt;` default: "HOST\_RAM\*.67"
:   Explicitly set the total amount of local host RAM (in MB) available to Bazel to spend on build actions executed locally. Takes an integer, or "HOST\_RAM", optionally followed by [-|\*]&lt;float&gt; (eg. HOST\_RAM\*.5 to use half the available RAM). By default, ("HOST\_RAM\*.67"), Bazel will query system configuration to estimate the amount of RAM available and will use 67% of it.

    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 ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` 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. Overrides resources specified by --local\_{cpu|ram|extra}\_resources.

    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=<an integer>` default: "4"
:   The maximum number of times Bazel should retry uploading a build event.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[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)

`--[no]experimental_build_event_fully_resolve_fileset_symlinks` default: "false"
:   If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental\_build\_event\_expand\_filesets.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_output_group_mode=<an output group name followed by an OutputGroupFileMode, e.g. default=both>` 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=<An immutable length of time.>` default: "1s"
:   Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--experimental_build_event_upload_strategy=<a string>` default: see description
:   Selects how to upload artifacts referenced in the build event protocol.

    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)

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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=<none, count or verbose>` default: "none"
:   For debugging Skyfocus. Dump the focused SkyKeys (roots, leafs, focused deps, focused rdeps).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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)

`--experimental_skyfocus_handling_strategy=<strict or warn>` default: "strict"
:   Strategies for Skyfocus to handle changes outside of the working set.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[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>` 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]ignore_unsupported_sandboxing` default: "false"
:   Do not print a warning when sandboxed execution is not supported on this system.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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. Useful when debugging actions. This is implied by --subcommands and --verbose\_failures.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--max_config_changes_to_show=<an integer>` default: "3"
:   When discarding the analysis cache due to a change in the build options, displays up to the given number of changed option names. If the number given is -1, all changed options will be displayed.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--max_test_output_bytes=<an integer>` default: "-1"
:   Specifies maximum per-test-log size that can be emitted when --test\_output is 'errors' or 'all'. Useful for avoiding overwhelming the output with excessively noisy test output. The test header is included in the log size. Negative values imply no limit. Output is all or nothing.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`execution`](#effect_tag_EXECUTION)

`--output_filter=<a valid Java regular expression>` default: see description
:   Only shows warnings and action outputs for rules with a name matching the provided regular expression.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--progress_report_interval=<an integer in 0-3600 range>` default: "0"
:   The number of seconds to wait between reports on still running jobs. The default value 0 means the first report will be printed after 10 seconds, then 30 seconds and after that progress is reported once every minute. When --curses is enabled, progress is reported every second.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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=<an integer>` default: "1"
:   Show the results of the build. For each target, state whether or not it was brought up-to-date, and if so, a list of output files that were built. The printed files are convenient strings for copy+pasting to the shell, to execute them.
    This option requires an integer argument, which is the threshold number of targets above which result information is not printed. Thus zero causes suppression of the message and MAX\_INT causes printing of the result to occur always. The default is one.
    If nothing was built for a target its results may be omitted to keep the output under the threshold.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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=<summary, errors, all or streamed>` 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=<short, terse, detailed, none or testcase>` 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_explanations` default: "false"
:   Increases the verbosity of the explanations issued if --explain is enabled. Has no effect if --explain is not enabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` 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>` 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=<failure>` default: see description
:   Specifies the strategy for the circuit breaker to use. Available strategies are "failure". On invalid value for the option the behavior same as the option is not set.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

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

`--experimental_remote_cache_eviction_retries=<an integer>` default: "5"
:   The maximum number of attempts to retry if the build encountered a transient remote cache error that would otherwise fail the build. Applies for example when artifacts are evicted from the remote cache, or in certain cache failure conditions. A non-zero value will implicitly set --incompatible\_remote\_use\_new\_exit\_code\_for\_lost\_inputs to true. A new invocation id will be generated for each attempt. If you generate invocation id and provide it to Bazel with --invocation\_id, you should not use this flag. Instead, set flag --incompatible\_remote\_use\_new\_exit\_code\_for\_lost\_inputs and check for the exit code 39.

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_remote_capture_corrupted_outputs=<a path>` 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>` 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:<url-index>:<header-key>` qualifier where the `<url-index>` is a 0-based position of the URL inside the FetchBlobRequest's `uris` field. The URL-specific headers should take precedence over the global headers.

`--[no]experimental_remote_execution_keepalive` default: "false"
:   Whether to use keepalive for remote execution calls.

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

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

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[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.

`--[no]experimental_remote_merkle_tree_cache` default: "false"
:   If set to true, Merkle tree calculations will be memoized to improve the remote cache hit checking speed. The memory foot print of the cache is controlled by --experimental\_remote\_merkle\_tree\_cache\_size.

`--experimental_remote_merkle_tree_cache_size=<a long integer>` default: "1000"
:   The number of Merkle trees to memoize to improve the remote cache hit checking speed. Even though the cache is automatically pruned according to Java's handling of soft references, out-of-memory errors can occur if set too high. If set to 0 the cache size is unlimited. Optimal value varies depending on project's size. Default to 1000.

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

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

`--[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_use_new_exit_code_for_lost_inputs` default: "true"
:   If set to true, Bazel will use new exit code 39 instead of 34 if remote cacheerrors, including cache evictions, cause the build to fail.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

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

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

`--remote_bytestream_uri_prefix=<a string>` default: see description
:   The hostname and instance name to be used in bytestream:// URIs that are written into build event streams. This option can be set when builds are performed using a proxy, which causes the values of --remote\_executor and --remote\_instance\_name to no longer correspond to the canonical name of the remote execution service. When not set, it will default to "\$\{hostname\}/\$\{instance\_name\}".

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

`--[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>` 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>` 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_default_platform_properties=<a string>` default: ""
:   Set the default platform properties to be set for the remote execution API, if the execution platform does not already set remote\_execution\_properties. This value will also be used if the host platform is selected as the execution platform for remote execution.

`--remote_download_regex=<a valid Java regular expression>` 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>` 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>` 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=<an integer>` 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>` 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>` 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>` 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>` 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>` default: "local"
:   Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.

`--remote_max_connections=<an integer>` default: "100"
:   Limit the max number of concurrent connections to remote cache/executor. By default the value is 100. Setting this to 0 means no limitation.
    For HTTP remote cache, one TCP connection could handle one request at one time, so Bazel could make up to --remote\_max\_connections concurrent requests.
    For gRPC remote cache/executor, one gRPC channel could usually handle 100+ concurrent requests, 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>` 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=<an integer>` default: "0"
:   The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.

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

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

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

`--[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=<none, all, packages or subpackages>` default: "none"
:   If --output\_filter is not specified, then the value for this option is used create a filter automatically. Allowed values are 'none' (filter nothing / show everything), 'all' (filter everything / show nothing), 'packages' (include output from rules in packages mentioned on the Blaze command line), and 'subpackages' (like 'packages', but also include subpackages). For the 'packages' and 'subpackages' values //java/foo and //javatests/foo are treated as one package)'.

`--[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=<comma-separated list of options>` 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=<none or lcov>` default: "none"
:   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=<comma-separated list of package names>` 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>` 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>` default: ""
:   Embed source control revision or release label in binary

`--execution_log_binary_file=<a path>` default: see description
:   Log the executed spawns into this file as length-delimited SpawnExec protos, according to src/main/protobuf/spawn.proto. Prefer --execution\_log\_compact\_file, which is significantly smaller and cheaper to produce. Related flags: --execution\_log\_compact\_file (compact format; mutually exclusive), --execution\_log\_json\_file (text JSON format; mutually exclusive), --execution\_log\_sort (whether to sort the execution log), --subcommands (for displaying subcommands in terminal output).

`--execution_log_compact_file=<a path>` default: see description
:   Log the executed spawns into this file as length-delimited ExecLogEntry protos, according to src/main/protobuf/spawn.proto. The entire file is zstd compressed. Related flags: --execution\_log\_binary\_file (binary protobuf format; mutually exclusive), --execution\_log\_json\_file (text JSON format; mutually exclusive), --subcommands (for displaying subcommands in terminal output).

`--execution_log_json_file=<a path>` default: see description
:   Log the executed spawns into this file as newline-delimited JSON representations of SpawnExec protos, according to src/main/protobuf/spawn.proto. Prefer --execution\_log\_compact\_file, which is significantly smaller and cheaper to produce. Related flags: --execution\_log\_compact\_file (compact format; mutually exclusive), --execution\_log\_binary\_file (binary protobuf format; mutually exclusive), --execution\_log\_sort (whether to sort the execution log), --subcommands (for displaying subcommands in terminal output).

`--[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=<An immutable length of time.>` default: "5m"
:   How long the server must remain idle before a garbage collection of the disk cache occurs. To specify the garbage collection policy, set --experimental\_disk\_cache\_gc\_max\_size and/or --experimental\_disk\_cache\_gc\_max\_age.

`--experimental_disk_cache_gc_max_age=<An immutable length of time.>` default: "0"
:   If set to a positive value, the disk cache will be periodically garbage collected to remove entries older than this age. If set in conjunction with --experimental\_disk\_cache\_gc\_max\_size, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental\_disk\_cache\_gc\_idle\_delay flag.

`--experimental_disk_cache_gc_max_size=<a size in bytes, optionally followed by a K, M, G or T multiplier>` default: "0"
:   If set to a positive value, the disk cache will be periodically garbage collected to stay under this size. If set in conjunction with --experimental\_disk\_cache\_gc\_max\_age, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the --experimental\_disk\_cache\_gc\_idle\_delay flag.

`--experimental_extra_action_filter=<a comma-separated list of regex expressions with prefix '-' specifying excluded paths>` 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=<mnemonic>=dynamic` flags instead.

`--[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=<an integer>` default: "15"
:   Time to wait between terminating a local process due to timeout and forcefully shutting it down.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

`--test_lang_filters=<comma-separated list of options>` 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=<comma-separated list of values: small, medium, large, or enormous>` 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=<comma-separated list of options>` 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=<comma-separated list of values: short, moderate, long, or eternal>` 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=<path>` 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 for an example.

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

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

`--[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: "false"
:   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=<regex=[+-]key,regex=[+-]key,...>` 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.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will 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>` 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=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android\_binary rules. Flag to help thetransition 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>` 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)

`--apple_crosstool_top=<a build target label>` default: "@bazel\_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

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

`--coverage_output_generator=<a build target label>` default: "@bazel\_tools//tools/test:lcov\_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` default: "@bazel\_tools//tools/test:coverage\_report\_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` 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>` 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)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86\_64 will add 'x86\_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:\{version}" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:\{version\_label}" 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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>` 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: "false"
:   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_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')>` 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')>` 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>` 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>` 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), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` 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>` 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)

`--python_top=<a build target label>` default: see description
:   The label of a py\_runtime representing 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')>` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

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

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel\_tools//tools/cpp:host\_xcodes"
:   The label of the xcode\_config rule to be used for selecting the Xcode version in the build configuration.

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

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=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc\_proto\_library creates.

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

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc\_proto\_library creates.

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

`--[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>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of {'fastbuild', 'dbg', 'opt'} 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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<off, default or fully>` default: "off"
:   Determines whether C++ deps of Android rules will be linked dynamically when a cc\_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

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

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[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=<comma-separated list of options>` 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=<fastbuild, dbg or opt>` [`-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>` 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>` 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>` default: ""
:   The target CPU.

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

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` 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>` 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=<off, default or fully>` default: "default"
:   Determines whether C++ binaries will be linked dynamically. 'default' means Bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

`--[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)

`--experimental_action_listener=<a build target label>` 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=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` 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>` 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>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_conlyopt=<a string>` 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>` 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>` default: ""
:   The host CPU.

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

`--host_cxxopt=<a string>` 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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

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

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

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

`--host_linkopt=<a string>` 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')>` 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>` 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 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]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>` 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')>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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=<comma-separated list of options>` 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')>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation\_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` 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=<comma-separated list of options>` 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')>` 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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')>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When enabled, enforce that a java\_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[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_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    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]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python\_version=PY2, srcs\_version=PY2, and srcs\_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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>` 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=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto\_library target explicitly declares all directly used targets as dependencies.

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

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto\_library target explicitly declares all targets used in 'import public' as exported.

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

`--[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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1\_v2"
:   Implementation to use to sign APKs

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

`--[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>` 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_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

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

`--[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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[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>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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>` 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')>` 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>` 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>` 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. 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>` 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]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: "false"
:   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_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc\_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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.

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

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[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)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible\_py3\_is\_default`.

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

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py\_binary` and `py\_test` targets that do not set their `python\_version` (or `default\_python\_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible\_py2\_outputs\_are\_suffixed`.

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

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python\_top.

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

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py\_binary` and `py\_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

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

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: "false"
:   If true, then Blaze will cancel concurrently running tests on the first successful run. 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)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

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

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

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

`--[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>` default: see description
:   The Java launcher used by tools that are executed during a build.

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

`--host_jvmopt=<a string>` 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: "false"
:   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=<comma-separated list of options>` 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.

`--[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>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.

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

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

`--jvmopt=<a string>` 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>` 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>` default: see description
:   Specifies a binary to use to do dexing without sharding.

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

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

`--proto_compiler=<a build target label>` default: "@bazel\_tools//tools/proto:protoc"
:   The label of the proto-compiler.

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

`--[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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<an integer>` 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=<explicit, disabled or forced=k where k is the number of shards to enforce>` default: "explicit"
:   Specify strategy for test sharding: 'explicit' to only use sharding if the 'shard\_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard\_count' BUILD attribute.

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

`--tool_java_runtime_version=<a string>` 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)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

`--for_command=<a string>` default: "build"
:   The command for which the options should be canonicalized.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--invocation_policy=<a string>` 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=<comma-separated list of package names>` 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=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[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.

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Config Options

## Coverage Options

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Cquery Options

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to query output and semantics:

`--aspect_deps=<off, conservative or precise>` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of {xml,proto,record}. '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=<an integer>` default: "512"
:   The maximum length of the label string for a graph node in the output. Longer labels will be truncated; -1 means no truncation. This option is only applicable to --output=graph.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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>` 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>` 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_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=<comma-separated list of options>` default: "all"
:   Comma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to --output=proto.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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>` 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=<off, direct or transitive>` default: "off"
:   Shows the configuration fragments required by a rule and its transitive dependencies. This can be useful for evaluating how much a configured target graph can be trimmed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--starlark:expr=<a string>` 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>` 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=<full, lite or none>` default: "none"
:   The format in which cquery will print transition information.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--universe_scope=<comma-separated list of options>` 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_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

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

`--[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: "false"
:   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=<regex=[+-]key,regex=[+-]key,...>` 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.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will 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>` 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=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android\_binary rules. Flag to help thetransition 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>` 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)

`--apple_crosstool_top=<a build target label>` default: "@bazel\_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

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

`--coverage_output_generator=<a build target label>` default: "@bazel\_tools//tools/test:lcov\_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` default: "@bazel\_tools//tools/test:coverage\_report\_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` 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>` 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)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86\_64 will add 'x86\_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:\{version}" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:\{version\_label}" 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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>` 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: "false"
:   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_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')>` 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')>` 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>` 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>` 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), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` 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>` 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)

`--python_top=<a build target label>` default: see description
:   The label of a py\_runtime representing 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')>` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

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

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel\_tools//tools/cpp:host\_xcodes"
:   The label of the xcode\_config rule to be used for selecting the Xcode version in the build configuration.

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

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=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc\_proto\_library creates.

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

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc\_proto\_library creates.

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

`--[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>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of {'fastbuild', 'dbg', 'opt'} 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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<off, default or fully>` default: "off"
:   Determines whether C++ deps of Android rules will be linked dynamically when a cc\_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

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

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[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=<comma-separated list of options>` 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=<fastbuild, dbg or opt>` [`-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>` 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>` 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>` default: ""
:   The target CPU.

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

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` 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>` 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=<off, default or fully>` default: "default"
:   Determines whether C++ binaries will be linked dynamically. 'default' means Bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

`--[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)

`--experimental_action_listener=<a build target label>` 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=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` 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>` 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>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_conlyopt=<a string>` 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>` 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>` default: ""
:   The host CPU.

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

`--host_cxxopt=<a string>` 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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

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

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

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

`--host_linkopt=<a string>` 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')>` 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>` 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 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]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>` 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')>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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=<comma-separated list of options>` 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')>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation\_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` 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=<comma-separated list of options>` 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')>` 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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')>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When enabled, enforce that a java\_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[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_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    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]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python\_version=PY2, srcs\_version=PY2, and srcs\_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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>` 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=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto\_library target explicitly declares all directly used targets as dependencies.

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

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto\_library target explicitly declares all targets used in 'import public' as exported.

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

`--[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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1\_v2"
:   Implementation to use to sign APKs

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

`--[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>` 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_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

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

`--[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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[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>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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>` 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')>` 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>` 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>` 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. 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>` 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]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: "false"
:   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_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc\_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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.

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

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[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)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible\_py3\_is\_default`.

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

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py\_binary` and `py\_test` targets that do not set their `python\_version` (or `default\_python\_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible\_py2\_outputs\_are\_suffixed`.

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

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python\_top.

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

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py\_binary` and `py\_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

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

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: "false"
:   If true, then Blaze will cancel concurrently running tests on the first successful run. 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)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

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

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

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

`--[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>` default: see description
:   The Java launcher used by tools that are executed during a build.

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

`--host_jvmopt=<a string>` 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: "false"
:   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=<comma-separated list of options>` 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.

`--[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>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.

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

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

`--jvmopt=<a string>` 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>` 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>` default: see description
:   Specifies a binary to use to do dexing without sharding.

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

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

`--proto_compiler=<a build target label>` default: "@bazel\_tools//tools/proto:protoc"
:   The label of the proto-compiler.

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

`--[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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<an integer>` 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=<explicit, disabled or forced=k where k is the number of shards to enforce>` default: "explicit"
:   Specify strategy for test sharding: 'explicit' to only use sharding if the 'shard\_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard\_count' BUILD attribute.

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

`--tool_java_runtime_version=<a string>` 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=<memory mode>` 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=<off, summary, count, value, deps, rdeps, function_graph, working_set or working_set_frontier_deps>` 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>` 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>` 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)

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

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

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` 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=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

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

`--[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: "false"
:   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=<regex=[+-]key,regex=[+-]key,...>` 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.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will 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>` 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=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android\_binary rules. Flag to help thetransition 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>` 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)

`--apple_crosstool_top=<a build target label>` default: "@bazel\_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

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

`--coverage_output_generator=<a build target label>` default: "@bazel\_tools//tools/test:lcov\_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` default: "@bazel\_tools//tools/test:coverage\_report\_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` 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>` 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)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86\_64 will add 'x86\_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:\{version}" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:\{version\_label}" 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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>` 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: "false"
:   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_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')>` 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')>` 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>` 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>` 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), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` 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>` 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)

`--python_top=<a build target label>` default: see description
:   The label of a py\_runtime representing 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')>` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

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

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel\_tools//tools/cpp:host\_xcodes"
:   The label of the xcode\_config rule to be used for selecting the Xcode version in the build configuration.

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

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=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc\_proto\_library creates.

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

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc\_proto\_library creates.

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

`--[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>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of {'fastbuild', 'dbg', 'opt'} 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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<off, default or fully>` default: "off"
:   Determines whether C++ deps of Android rules will be linked dynamically when a cc\_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

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

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[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=<comma-separated list of options>` 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=<fastbuild, dbg or opt>` [`-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>` 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>` 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>` default: ""
:   The target CPU.

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

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` 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>` 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=<off, default or fully>` default: "default"
:   Determines whether C++ binaries will be linked dynamically. 'default' means Bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

`--[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)

`--experimental_action_listener=<a build target label>` 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=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` 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>` 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>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_conlyopt=<a string>` 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>` 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>` default: ""
:   The host CPU.

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

`--host_cxxopt=<a string>` 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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

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

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

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

`--host_linkopt=<a string>` 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')>` 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>` 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 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]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>` 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')>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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=<comma-separated list of options>` 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')>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation\_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` 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=<comma-separated list of options>` 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')>` 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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')>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When enabled, enforce that a java\_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[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_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    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]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python\_version=PY2, srcs\_version=PY2, and srcs\_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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>` 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=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto\_library target explicitly declares all directly used targets as dependencies.

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

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto\_library target explicitly declares all targets used in 'import public' as exported.

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

`--[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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1\_v2"
:   Implementation to use to sign APKs

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

`--[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>` 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_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

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

`--[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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[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>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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>` 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')>` 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>` 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>` 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. 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>` 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]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: "false"
:   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_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc\_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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.

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

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[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)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible\_py3\_is\_default`.

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

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py\_binary` and `py\_test` targets that do not set their `python\_version` (or `default\_python\_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible\_py2\_outputs\_are\_suffixed`.

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

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python\_top.

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

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py\_binary` and `py\_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

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

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: "false"
:   If true, then Blaze will cancel concurrently running tests on the first successful run. 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)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

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

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

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

`--[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>` default: see description
:   The Java launcher used by tools that are executed during a build.

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

`--host_jvmopt=<a string>` 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: "false"
:   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=<comma-separated list of options>` 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.

`--[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>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.

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

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

`--jvmopt=<a string>` 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>` 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>` default: see description
:   Specifies a binary to use to do dexing without sharding.

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

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

`--proto_compiler=<a build target label>` default: "@bazel\_tools//tools/proto:protoc"
:   The label of the proto-compiler.

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

`--[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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<an integer>` 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=<explicit, disabled or forced=k where k is the number of shards to enforce>` default: "explicit"
:   Specify strategy for test sharding: 'explicit' to only use sharding if the 'shard\_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard\_count' BUILD attribute.

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

`--tool_java_runtime_version=<a string>` 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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

`--help_verbosity=<long, medium or short>` 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.

`--short`
:   Show only the names of the options, not their types or meanings.

## Info Options

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Mobile-install Options

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

Options that control build execution:

`--mode=<classic, classic_internal_test_do_not_use or skylark>` default: "skylark"
:   Deprecated no-effect flag. Only skylark mode is still supported.

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

Options that configure the toolchain used for action execution:

`--adb=<a string>` 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>` 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.

`--device=<a string>` 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=<no, cold, warm or debug>` default: "NO"
:   How the app should be started after installing it. Set to WARM to preserve and restore application state on incremental installs.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--start_app`
:   Whether to start the app after installing it.

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

`--incremental_install_verbosity=<a string>` 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_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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_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: "false"
:   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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` 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=<regex=[+-]key,regex=[+-]key,...>` 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)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<fastbuild, dbg or opt>` [`-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>` default: ""
:   The target CPU.

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

`--define=<a 'name=value' assignment>` 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)

`--experimental_action_listener=<a build target label>` 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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_cpu=<a string>` default: ""
:   The host CPU.

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

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; 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 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]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>` 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>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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]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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    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)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_env=<a 'name=value' assignment with an optional value part>` 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. 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)

Options relating to the output and semantics of the `mod` subcommand:

`--base_module=<"<root>" for the root module; <module>@<version> for a specific version of a module; <module> for all versions of a module; @<name> for a repo with the given apparent name; or @@<name> for a repo with the given canonical name>` default: `"<root>"`
:   Specify a module relative to which the specified target repos will be interpreted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--charset=<utf8 or ascii>` default: "utf8"
:   Chooses the character set to use for the tree. Only affects text output. Valid values are "utf8" or "ascii". Default is "utf8"

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]cycles` default: "false"
:   Points out dependency cycles inside the displayed tree, which are normally ignored by default.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--depth=<an integer>` default: "-1"
:   Maximum display depth of the dependency tree. A depth of 1 displays the direct dependencies, for example. For tree, path and all\_paths it defaults to Integer.MAX\_VALUE, while for deps and explain it defaults to 1 (only displays direct deps of the root besides the target leaves and their parents).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--extension_filter=<a comma-separated list of <extension>s>` default: see description
:   Only display the usages of these module extensions and the repos generated by them if their respective flags are set. If set, the result graph will only include paths that contain modules using the specified extensions. An empty list disables the filter, effectively specifying all possible extensions.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--extension_info=<hidden, usages, repos or all>` default: "hidden"
:   Specify how much detail about extension usages to include in the query result. "Usages" will only show the extensions names, "repos" will also include repos imported with use\_repo, and "all" will also show the other repositories generated by extensions.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--extension_usages=<a comma-separated list of <module>s>` 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 <module>s>` default: `"<root>"`
:   The module(s) starting from which the dependency graph query will be displayed. Check each query’s description for the exact semantics. Defaults to `<root>`.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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=<text, json or graph>` 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 specifying or altering a generic input to a Bazel command that does not fall into other categories.:

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

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` 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=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Print\_action Options

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Miscellaneous options, not otherwise categorized.:

`--print_action_mnemonics=<a string>` 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_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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_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: "false"
:   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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` 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=<regex=[+-]key,regex=[+-]key,...>` 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)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<fastbuild, dbg or opt>` [`-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>` default: ""
:   The target CPU.

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

`--define=<a 'name=value' assignment>` 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)

`--experimental_action_listener=<a build target label>` 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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_cpu=<a string>` default: ""
:   The host CPU.

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

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; 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 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]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>` 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>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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]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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    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)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_env=<a 'name=value' assignment with an optional value part>` 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. 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)

Options relating to query output and semantics:

`--aspect_deps=<off, conservative or precise>` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of {xml,proto,record}. '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=<an integer>` default: "4"
:   The maximum number of condition labels to show. -1 means no truncation and 0 means no annotation. This option is only applicable to --output=graph.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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=<an integer>` default: "512"
:   The maximum length of the label string for a graph node in the output. Longer labels will be truncated; -1 means no truncation. This option is only applicable to --output=graph.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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.

`--null`
:   Whether each format is terminated with \0 instead of newline.

`--order_output=<no, deps, auto or full>` default: "auto"
:   Output the results unordered (no), dependency-ordered (deps), or fully ordered (full). The default is 'auto', meaning that results are output either dependency-ordered or fully ordered, depending on the output formatter (dependency-ordered for proto, minrank, maxrank, and graph, fully ordered for all others). When output is fully ordered, nodes are printed in a fully deterministic (total) order. First, all nodes are sorted alphabetically. Then, each node in the list is used as the start of a post-order depth-first search in which outgoing edges to unvisited nodes are traversed in alphabetical order of the successor nodes. Finally, nodes are printed in the reverse of the order in which they were visited.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--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.

`--output=<a string>` default: "label"
:   The format in which the query results should be printed. Allowed values for query are: build, graph, streamed\_jsonproto, label, label\_kind, location, maxrank, minrank, package, proto, streamed\_proto, xml.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--output_file=<a string>` 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_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=<comma-separated list of options>` default: "all"
:   Comma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to --output=proto.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[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>` 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=<comma-separated list of options>` 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:

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` 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=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[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>` 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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Shutdown Options

Options that control the output of the command:

`--iff_heap_size_greater_than=<an integer>` default: "0"
:   Iff non-zero, then shutdown will only shut down the server if the total memory (in MB) consumed by the JVM exceeds this value.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Sync Options

Options that control build execution:

`--[no]configure` default: "False"
:   Only sync repositories marked as 'configure' for system-configuration purpose.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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_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: "false"
:   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=<an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]&lt;float&gt;) eg. "auto", "HOST_CPUS*.5">` 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=<regex=[+-]key,regex=[+-]key,...>` 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)

`--only=<a string>` multiple uses are accumulated
:   If this option is given, only sync the repositories specified with this option. Still consider all (or all configure-like, of --configure is given) outdated.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<fastbuild, dbg or opt>` [`-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>` default: ""
:   The target CPU.

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

`--define=<a 'name=value' assignment>` 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)

`--experimental_action_listener=<a build target label>` 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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_cpu=<a string>` default: ""
:   The host CPU.

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

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; 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 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]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>` 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>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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]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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    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)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_env=<a 'name=value' assignment with an optional value part>` 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. 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)

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

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` 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=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Test Options

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

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to Bzlmod output and semantics:

`--repo=<a string>` 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=<comma-separated list of package names>` 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=<colon-separated list of options>` default: "%workspace%"
:   A colon-separated list of where to look for packages. Elements beginning with '%workspace%' are relative to the enclosing workspace. If omitted or empty, the default is the output of 'bazel info default-package-path'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

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

`--[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: "false"
:   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=<regex=[+-]key,regex=[+-]key,...>` 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.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will 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>` 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=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android\_binary rules. Flag to help thetransition 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>` 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)

`--apple_crosstool_top=<a build target label>` default: "@bazel\_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

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

`--coverage_output_generator=<a build target label>` default: "@bazel\_tools//tools/test:lcov\_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` default: "@bazel\_tools//tools/test:coverage\_report\_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//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>` 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>` 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)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86\_64 will add 'x86\_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:\{version}" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:\{version\_label}" 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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>` 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: "false"
:   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_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')>` 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')>` 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>` 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>` 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), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` 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>` 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)

`--python_top=<a build target label>` default: see description
:   The label of a py\_runtime representing 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')>` 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)

`--watchos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from 'xcode\_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

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

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel\_tools//tools/cpp:host\_xcodes"
:   The label of the xcode\_config rule to be used for selecting the Xcode version in the build configuration.

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

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=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc\_proto\_library creates.

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

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc\_proto\_library creates.

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

`--[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>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of {'fastbuild', 'dbg', 'opt'} 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 <code>DefaultInfo.files</code> of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles\_features\_to\_avoid).

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

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[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>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by <code>name</code>, in which case
    the value will be taken from the invocation environment, or by the <code>name=value</code> pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    <br/>
    Note that unless <code>--incompatible\_repo\_env\_ignores\_action\_env</code> is true, all <code>name=value</code> pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` 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=<off, default or fully>` default: "off"
:   Determines whether C++ deps of Android rules will be linked dynamically when a cc\_binary does not explicitly create a shared library. 'default' means bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

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

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[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=<comma-separated list of options>` 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=<fastbuild, dbg or opt>` [`-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>` 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>` 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>` default: ""
:   The target CPU.

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

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` 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>` 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=<off, default or fully>` default: "default"
:   Determines whether C++ binaries will be linked dynamically. 'default' means Bazel will choose whether to link dynamically. 'fully' means all libraries will be linked dynamically. 'off' means that all libraries will be linked in mostly static mode.

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

`--[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)

`--experimental_action_listener=<a build target label>` 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=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[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=<off, content or strip>` default: "off"
:   Which model to use for where in the output tree rules write their outputs, particularly for multi-platform / multi-configuration builds. This is highly experimental. See https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt 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_name_platform_in_output_dir=<a 'label=value' assignment>` 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 use in the output path. Only used when --experimental\_platform\_in\_output\_dir is true. Has highest naming priority.

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

`--[no]experimental_platform_in_output_dir` default: "false"
:   If true, a shortname for the target platform is used in the output directory name instead of the CPU. The exact scheme is experimental and subject to change: First, in the rare case the --platforms option does not have exactly one value, a hash of the platforms option is used. Next, if any shortname for the current platform was registered by --experimental\_override\_name\_platform\_in\_output\_dir, then that shortname is used. Then, if --experimental\_use\_platforms\_in\_output\_dir\_legacy\_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

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

`--[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>` 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>` 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>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

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

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; 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>` 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, or by the name=value pair which sets the value independent of the invocation environment. 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=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

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

`--host_conlyopt=<a string>` 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>` 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>` default: ""
:   The host CPU.

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

`--host_cxxopt=<a string>` 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>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

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

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

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

`--host_linkopt=<a string>` 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')>` 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>` 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 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]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>` 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')>` 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=<comma-separated list of options>` 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>` 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>` 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>` 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=<comma-separated list of options>` 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')>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation\_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` 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=<comma-separated list of options>` 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')>` 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=<comma-separated list of options>` 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=<comma-separated list of options>` 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')>` 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>` 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_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[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)

`--[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)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When enabled, enforce that a java\_binary rule can't contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[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_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    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]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python\_version=PY2, srcs\_version=PY2, and srcs\_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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>` 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=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto\_library target explicitly declares all directly used targets as dependencies.

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

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto\_library target explicitly declares all targets used in 'import public' as exported.

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

`--[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>` multiple uses are accumulated
:   Declares this build's target environment. Must be a label reference to an "environment" rule. If specified, all top-level targets must be compatible with this environment.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1\_v2"
:   Implementation to use to sign APKs

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

`--[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>` 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_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

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

`--[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=<an integer>` default: "2000"
:   Sets the maximum number of transitive dependencies through a rule attribute with a for\_analysis\_testing configuration transition. Exceeding this limit will result in a rule error.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[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>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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>` 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')>` 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>` 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>` 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. 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>` 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]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: "false"
:   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_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc\_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`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.

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

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>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[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)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible\_py3\_is\_default`.

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

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py\_binary` and `py\_test` targets that do not set their `python\_version` (or `default\_python\_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible\_py2\_outputs\_are\_suffixed`.

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

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python\_top.

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

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py\_binary` and `py\_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

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

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: "false"
:   If true, then Blaze will cancel concurrently running tests on the first successful run. 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)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

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

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

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

`--[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>` default: see description
:   The Java launcher used by tools that are executed during a build.

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

`--host_jvmopt=<a string>` 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: "false"
:   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=<comma-separated list of options>` 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.

`--[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>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The "launcher" attribute overrides this flag.

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

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

`--jvmopt=<a string>` 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>` 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>` default: see description
:   Specifies a binary to use to do dexing without sharding.

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

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

`--proto_compiler=<a build target label>` default: "@bazel\_tools//tools/proto:protoc"
:   The label of the proto-compiler.

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

`--[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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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>` 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=<an integer>` 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=<explicit, disabled or forced=k where k is the number of shards to enforce>` default: "explicit"
:   Specify strategy for test sharding: 'explicit' to only use sharding if the 'shard\_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard\_count' BUILD attribute.

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

`--tool_java_runtime_version=<a string>` 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)

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

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

### 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. |
| `immutable` | This option cannot be changed in a transition. |

