---
layout: commands
page_title: 'Commands: Operator Autopilot'
description: >
  The operator autopilot subcommand is used to view and modify Consul's
  Autopilot configuration.
---

# Consul Operator Autopilot

Command: `consul operator autopilot`

The Autopilot operator command is used to interact with Consul's Autopilot subsystem. The
command can be used to view or modify the current Autopilot configuration. See the
[Autopilot Guide](https://learn.hashicorp.com/consul/day-2-operations/autopilot) for more information about Autopilot.

```text
Usage: consul operator autopilot <subcommand> [options]

The Autopilot operator command is used to interact with Consul's Autopilot
subsystem. The command can be used to view or modify the current configuration.

Subcommands:

    get-config    Display the current Autopilot configuration
    set-config    Modify the current Autopilot configuration
```

## get-config

Corresponding HTTP API Endpoint: [\[GET\] /v1/operator/autopilot/configuration](/api-docs/operator/autopilot#read-configuration)

This command displays the current autopilot configuration.

The table below shows this command's [required ACLs](/api#authentication). Configuration of
[blocking queries](/api-docs/features/blocking) and [agent caching](/api-docs/features/caching)
are not supported from commands, but may be from the corresponding HTTP endpoint.

| ACL Required    |
| --------------- |
| `operator:read` |

Usage: `consul operator autopilot get-config [options]`

#### API Options

@include 'http_api_options_client.mdx'

@include 'http_api_options_server.mdx'

### Command Output

```sh
$ consul operator autopilot get-config
CleanupDeadServers = true
LastContactThreshold = 200ms
MaxTrailingLogs = 250
ServerStabilizationTime = 10s
RedundancyZoneTag = ""
DisableUpgradeMigration = false
UpgradeMigrationTag = ""
```

## set-config

Corresponding HTTP API Endpoint: [\[PUT\] /v1/operator/autopilot/configuration](/api-docs/operator/autopilot#update-configuration)

Modifies the current Autopilot configuration.

The table below shows this command's [required ACLs](/api#authentication). Configuration of
[blocking queries](/api-docs/features/blocking) and [agent caching](/api-docs/features/caching)
are not supported from commands, but may be from the corresponding HTTP endpoint.

| ACL Required     |
| ---------------- |
| `operator:write` |

Usage: `consul operator autopilot set-config [options]`

#### API Options

@include 'http_api_options_client.mdx'

@include 'http_api_options_server.mdx'

#### Command Options

- `-cleanup-dead-servers` - Specifies whether to enable automatic removal of dead servers
  upon the successful joining of new servers to the cluster. Must be one of `[true|false]`.

- `-last-contact-threshold` - Controls the maximum amount of time a server can go without contact
  from the leader before being considered unhealthy. Must be a duration value such as `200ms`.

- `-max-trailing-logs` - Controls the maximum number of log entries that a server can trail
  the leader by before being considered unhealthy.

- `-min-quorum` - Sets the minimum number of servers required in a cluster
  before autopilot is allowed to prune dead servers.

- `-server-stabilization-time` - Controls the minimum amount of time a server must be stable in
  the 'healthy' state before being added to the cluster. Only takes effect if all servers are
  running Raft protocol version 3 or higher. Must be a duration value such as `10s`.

- `-disable-upgrade-migration` <EnterpriseAlert inline /> - Controls whether Consul will avoid promoting
  new servers until it can perform a migration. Must be one of `[true|false]`.

- `-redundancy-zone-tag` <EnterpriseAlert inline /> - Controls the [`-node-meta`](/docs/agent/options#_node_meta)
  key name used for separating servers into different redundancy zones.

- `-upgrade-version-tag` <EnterpriseAlert inline /> - Controls the [`-node-meta`](/docs/agent/options#_node_meta)
  tag to use for version info when performing upgrade migrations. If left blank, the Consul version will be used.

### Command Output

```sh
$ consul operator autopilot set-config -min-quorum=3
Configuration updated!
```

The return code will indicate success or failure.

## state

Corresponding HTTP API Endpoint: [\[GET\] /v1/operator/autopilot/state](/api-docs/operator/autopilot#read-the-autopilot-state)

This command displays the current autopilot state.

The table below shows this command's [required ACLs](/api#authentication). Configuration of
[blocking queries](/api-docs/features/blocking) and [agent caching](/api-docs/features/caching)
are not supported from commands, but may be from the corresponding HTTP endpoint.

| ACL Required    |
| --------------- |
| `operator:read` |

Usage: `consul operator autopilot state [options]`

#### API Options

@include 'http_api_options_client.mdx'

@include 'http_api_options_server.mdx'

#### Command Options

- `-format` - Specifies the output format. Must be one of `[pretty|json]` and it defaults to `pretty`.

#### Command Output

```sh
$ consul operator autopilot state
Healthy:                      true
Failure Tolerance:            1
Optimistic Failure Tolerance: 0
Leader:                       79324811-9588-4311-b208-f272e38aaabf
Voters:
   79324811-9588-4311-b208-f272e38aaabf
   ef8aee9a-f9d6-4ec4-b383-aac956bdb80f
   ae84aefb-a303-4734-8739-5c102d4ee2d9
Servers:
   79324811-9588-4311-b208-f272e38aaabf
      Name:            node1
      Address:         198.18.0.1:8300
      Version:         1.9.0
      Status:          leader
      Node Type:       voter
      Node Status:     alive
      Healthy:         true
      Last Contact:    0s
      Last Term:       3
      Last Index:      42
      Meta
         "foo": "bar"
   ae84aefb-a303-4734-8739-5c102d4ee2d9
      Name:            node3
      Address:         198.18.0.3:8300
      Version:         1.9.0
      Status:          voter
      Node Type:       voter
      Node Status:     alive
      Healthy:         true
      Last Contact:    2ms
      Last Term:       3
      Last Index:      39
      Meta
         "baz": "foo"
   ef8aee9a-f9d6-4ec4-b383-aac956bdb80f
      Name:            node2
      Address:         198.18.0.2:8300
      Version:         1.9.0
      Status:          voter
      Node Type:       voter
      Node Status:     alive
      Healthy:         true
      Last Contact:    1ms
      Last Term:       3
      Last Index:      41
      Meta
         "bar": "baz"
```
