command: docker pass set
short: Set a secret
long: |-
    Stores a secret in the local OS keychain. The secret value can be provided inline (`NAME=VALUE`) or piped via STDIN.

    Behavior when a secret with the same id already exists is platform-dependent:
      - macOS (Keychain): the command fails with a duplicate-item error.
      - Linux (Secret Service) and Windows (Credential Manager): the existing
        value is silently overwritten.

    Pass `--force` to overwrite an existing secret. On Linux and Windows the
    replacement is performed atomically. On macOS the Keychain API requires
    a delete-then-add sequence.
usage: docker pass set id[=value] [flags]
pname: docker pass
plink: docker_pass.yaml
options:
    - option: force
      shorthand: f
      value_type: bool
      default_value: "false"
      description: Overwrite existing secret if it already exists
      deprecated: false
      hidden: false
      experimental: false
      experimentalcli: false
      kubernetes: false
      swarm: false
    - option: metadata
      value_type: stringArray
      default_value: '[]'
      description: Non-sensitive key=value metadata (repeatable)
      deprecated: false
      hidden: false
      experimental: false
      experimentalcli: false
      kubernetes: false
      swarm: false
deprecated: false
hidden: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: |-
    ### Set a secret:

    ```console
    $ docker pass set POSTGRES_PASSWORD=my-secret-password
    ```

    ### Or pass the secret via STDIN:

    ```console
    $ echo my-secret-password > pwd.txt
    $ cat pwd.txt | docker pass set POSTGRES_PASSWORD
    ```

    ### Set a secret with metadata:

    ```console
    $ docker pass set POSTGRES_PASSWORD=my-secret-password --metadata owner=alice --metadata expiry=2027-03-01
    ```

    ### Or pass a JSON payload with secret and metadata via STDIN:

    ```console
    $ echo '{"secret":"my-secret-password","metadata":{"owner":"alice"}}' | docker pass set POSTGRES_PASSWORD
    ```

    ### Overwrite an existing secret:

    ```console
    $ docker pass set POSTGRES_PASSWORD=new-secret-password --force
    ```
