> ## Documentation Index
> Fetch the complete documentation index at: https://www.1password.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Use 1Password to securely authenticate the Scaleway CLI

export const name_1 = "Scaleway"

export const Gethelp = ({command, img, name}) => {
  return <>
      <h3>Inspect your configuration</h3>

      <p>To inspect your current {name} configuration:</p>

      <CodeBlock language="shell" children={`op plugin inspect ${command}`} />

      <p>
        1Password CLI will return a list of the credentials you've configured to use with {name} and their default
        scopes, as well as a list of aliases configured for {name}.
      </p>

      <>
        {img && <div style={{
    textAlign: "center"
  }}>
            <Frame>
              <img src={img} alt="A terminal window showing the results of the command op plugin inspect." width="900" />
            </Frame>
          </div>}
      </>

      <h3>Clear your credentials</h3>

      <p>To reset the credentials used with {name}:</p>

      <CodeBlock language="shell" children={`op plugin clear ${command}`} />

      <p>You can clear one configuration at a time, in this order of precedence:</p>

      <ol>
        <li>Terminal session default</li>
        <li>
          Directory default, from the current directory to <code>$HOME</code>
        </li>
        <li>Global default</li>
      </ol>

      <p>
        For example, if you're in the directory <code>$HOME/projects/awesomeProject</code> and you have a terminal
        session default, directory defaults for <code>$HOME</code> and <code>$HOME/projects/awesomeProject</code>, and a
        global default credential configured, you would need to run <code>op plugin clear {command}</code> four times to
        clear all of your defaults.
      </p>

      <p>
        To clear your global default credentials, terminal session default, and the defaults for your current directory
        at the same time, run <code>op plugin clear {command} --all</code>.
      </p>
    </>;
};

export const name_0 = "Scaleway CLI"

export const Step3 = ({img, name}) => {
  const fixImgSrc = src => {
    if (!src.startsWith("/")) {
      return "/" + src;
    }
    return src;
  };
  return <>
      <p>
        The next time you enter a command with {name}, you'll be prompted to authenticate with biometrics or system
        authentication.
      </p>

      <>
        {img && <div style={{
    textAlign: "center"
  }}>
            <Frame>
              <img src={img} alt="A CLI being authenticated using 1Password CLI biometric unlock." width="900" />
            </Frame>
          </div>}
      </>
    </>;
};

export const Step1 = ({command, img1, img2, img3, img4, name}) => {
  return <>
      <p>To get started with the {name} shell plugin:</p>

      <ol>
        <li>
          Sign in to the 1Password account you want to use with the {name} plugin:{" "}
          <CodeBlock language="shell" children={`op signin`} />
        </li>
        <li>If you only want to configure the plugin in a specific directory, change to that directory.</li>
        <li>
          Run the command to set up the plugin:
          <CodeBlock language="shell" children={`op plugin init ${command}`} />
        </li>
      </ol>

      <p>
        You'll be prompted to import your {name} credentials into 1Password or select an existing 1Password item where
        your credentials are saved, then configure when the credentials should be used.
      </p>

      <>
        {img1 && <div style={{
    textAlign: "center"
  }}>
            <Frame>
              <img src={img1} alt="A terminal window displaying the op plugin init command and options to import or select an item." width="900" />
            </Frame>
          </div>}
      </>

      <h3>Step 1.1: Import or select an item</h3>

      <h4>Import a new item</h4>

      <p>
        If you haven't saved your {name} credentials in 1Password yet, select <strong>Import into 1Password</strong>.
        Enter your credentials, choose a name for the new 1Password item, and select the vault where you want to save
        it.
      </p>

      <p>
        If 1Password detects your credentials in your local development environment, you'll be prompted to import them
        automatically.
      </p>

      <>
        {img2 && <div style={{
    textAlign: "center"
  }}>
            <Frame>
              <img src={img2} alt="A terminal window showing the fields available to import an item, including the token, item name, and vault." width="900" />
            </Frame>
          </div>}
      </>

      <h4>Select an existing item</h4>

      <p>
        If you've already saved your {name} credentials in 1Password, select <strong>Search in 1Password</strong>.
      </p>

      <p>
        You'll see a list of related items and the vaults where they're saved. If you don't see your credentials, select{" "}
        <strong>Expand search</strong> to browse all items in your account.
      </p>

      <>
        {img3 && <div style={{
    textAlign: "center"
  }}>
            <Frame>
              <img src={img3} alt="A terminal window showing the option to search for an existing item in your 1Password account." width="900" />
            </Frame>
          </div>}
      </>

      <h3>Step 1.2: Set default credential scope</h3>

      <p>
        After you select or import your credentials, you'll be prompted to configure when to use the item to
        authenticate {name}.
      </p>

      <>
        {img4 && <div style={{
    textAlign: "center"
  }}>
            <Frame>
              <img src={img4} alt="A terminal window showing the options for configuring when the credentials should be used." width="900" />
            </Frame>
          </div>}
      </>

      <ul>
        <li>
          <strong>"Prompt me for each new terminal session"</strong> will only configure the credentials for the
          duration of the current terminal session. Once you exit the terminal, the default will be removed.
        </li>
        <li>
          <strong>"Use automatically when in this directory or subdirectories"</strong> will make the credentials the
          default in the current directory and all of its subdirectories, as long as no other directory-specific
          defaults are set in them. A terminal-session default takes precedence over a directory-specific one.
        </li>
        <li>
          <strong>"Use as global default on my system"</strong> will set the credentials as the default in all terminal
          sessions and directories. A directory-specific default takes precedence over a global one.
        </li>
      </ul>
    </>;
};

export const Small = ({children}) => {
  return <small>{children}</small>;
};

The Scaleway shell plugin lets you use 1Password to authenticate the [Scaleway CLI (`scw`) <Icon icon="arrow-up-right-from-square" />](https://www.scaleway.com/en/cli/) with your fingerprint, Apple Watch, or system authentication, instead of storing API keys in plaintext.

Follow the instructions to configure your default credentials and source the `plugins.sh` file, then you'll be prompted to authenticate the Scaleway CLI with biometrics.

<Tip>
  The plugin applies to the Scaleway CLI’s **default** configuration. It does not support separate [CLI profiles](https://github.com/scaleway/scaleway-cli/blob/master/docs/commands/config.md).
</Tip>

## Requirements

1. [Sign up for 1Password.](https://1password.com/pricing/password-manager)
2. Install and sign in to 1Password for [Mac](https://1password.com/downloads/mac) or [Linux](https://1password.com/downloads/linux).
3. Install [1Password CLI](https://app-updates.agilebits.com/product_history/CLI2) 2.34.0 or later.<br />
   <Small>If you've already installed 1Password CLI, learn how to <a href="/cli/reference/update/">update your installation</a>.</Small>
4. [Integrate 1Password CLI with the 1Password app](/cli/get-started/#step-2-turn-on-the-1password-desktop-app-integration).
5. Install and configure the [Scaleway CLI <Icon icon="arrow-up-right-from-square" />](https://www.scaleway.com/en/docs/developer-tools/scaleway-cli/quickstart/).

The following shells are supported:

* Bash
* Zsh
* fish

## Before you begin: Create a Scaleway API key

If you already have a Scaleway API key, [skip to step 1](#step-1-configure-your-default-credentials).

Otherwise, create an API key in the [Scaleway console <Icon icon="arrow-up-right-from-square" />](https://console.scaleway.com/iam/api-keys) and save the **access key** and **secret key** in 1Password. See Scaleway’s guide to [creating API keys <Icon icon="arrow-up-right-from-square" />](https://www.scaleway.com/en/docs/iam/how-to/create-api-keys/).

## Step 1: Configure your default credentials

<Step1 name="Scaleway CLI" command="scw" />

## Step 2: Source the plugins.sh file

<p>To make the plugin available, source your <code>plugins.sh</code> file. For example:</p>

```sh theme={null}
source ~/.config/op/plugins.sh
```

<p>The file path for your <code>op</code> folder may vary depending on your <a href="/cli/config-directories/">configuration directory</a>. <code>op plugin init</code> will output a source command with the correct file path.</p>

<p>If this is your first time installing a shell plugin, you'll also need to add the source command to your RC file or shell profile to persist the plugin beyond the current terminal session. For example:</p>

<CodeGroup>
  <CodeBlock filename="Bash" language="shell" children={`echo "source ~/.config/op/plugins.sh" >> ~/.bashrc && source ~/.bashrc`} />

  <CodeBlock filename="Zsh" language="shell" children={`echo "source ~/.config/op/plugins.sh" >> ~/.zshrc && source ~/.zshrc`} />

  <CodeBlock filename="fish" language="shell" children={`echo "source ~/.config/op/plugins.sh" >> ~/.config/fish/config.fish && source ~/.config/fish/config.fish`} />
</CodeGroup>

## Step 3: Use the CLI

<Step3 name="Scaleway CLI" command="scw" />

For example, after configuring the plugin, try:

```shell theme={null}
scw account project list
```

## Step 4: Remove imported credentials from disk

<p>After saving your {name_0} credentials in 1Password, you can remove all local copies you previously had stored on disk.</p>

## Next steps

<p>1Password Shell Plugins support <a href="/cli/shell-plugins/#get-started">more than 60 third-party CLIs</a>. To see a list of supported CLIs:</p>

<CodeBlock language="shell" children={`op plugin list`} />

<p>To choose another plugin to get started with:</p>

<CodeBlock language="shell" children={`op plugin init`} />

<p>To use shell plugins for seamless context switching, learn how to configure a plugin in <a href="/cli/shell-plugins/environments/">multiple environments</a> or with <a href="/cli/shell-plugins/multiple-accounts/">multiple accounts.</a></p>

## Get help

<Gethelp name="Scaleway CLI" command="scw" />

## Reference

<p>1Password authenticates with {name_1} by injecting environment variables with the credentials required by the plugin commands directly from your 1Password account.</p>

<p>If you saved your {name_1} credentials in 1Password manually rather than using <code>op plugin</code> to import a new item, make sure that your field names match the table below.</p>

<p>If the item doesn't contain a field with the required name, you'll be prompted to rename one of the existing fields.</p>

| 1Password field names      | Environment variable          |
| -------------------------- | ----------------------------- |
| Access key                 | `SCW_ACCESS_KEY`              |
| Secret key                 | `SCW_SECRET_KEY`              |
| Default region (optional)  | `SCW_DEFAULT_REGION`          |
| Default zone (optional)    | `SCW_DEFAULT_ZONE`            |
| Project ID (optional)      | `SCW_DEFAULT_PROJECT_ID`      |
| Organization ID (optional) | `SCW_DEFAULT_ORGANIZATION_ID` |

*Thanks to [@jksolbakken](https://github.com/jksolbakken) for [contributing this plugin](https://github.com/1Password/shell-plugins/pull/515)! Learn how to [build your own shell plugins](/cli/shell-plugins/contribute/).*

<h2>Learn more</h2>

<ul>
  <li><a href="/cli/shell-plugins/environments/">Use shell plugins to switch between multiple environments</a></li>
  <li><a href="/cli/shell-plugins/multiple-accounts/">Use shell plugins with multiple accounts</a></li>
  <li><a href="/cli/shell-plugins/contribute/">Build your own shell plugins</a></li>
</ul>
