GH-EXTENSION-INSTALL(1) GitHub CLI manual GH-EXTENSION-INSTALL(1)

# [NAME](#NAME)

gh-extension-install - Install a gh extension from a repository

# [SYNOPSIS](#SYNOPSIS)

**gh extension install &lt;repository&gt; \[flags]**

# [DESCRIPTION](#DESCRIPTION)

Install a GitHub CLI extension from a GitHub or local repository.

For GitHub repositories, the repository argument can be specified in **OWNER/REPO** format or as a full repository URL. The URL format is useful when the repository is not hosted on **github.com**.

For remote repositories, the GitHub CLI first looks for the release artifacts assuming that it's a binary extension i.e. prebuilt binaries provided as part of the release. In the absence of a release, the repository itself is cloned assuming that it's a script extension i.e. prebuilt executable or script exists on its root.

The **--pin** flag may be used to specify a tag or commit for binary and script extensions respectively, the latest version is used otherwise.

For local repositories, often used while developing extensions, use **.** as the value of the repository argument. Note the following:

- After installing an extension from a locally cloned repository, the GitHub CLI will manage this extension as a symbolic link (or equivalent mechanism on Windows) pointing to an executable file with the same name as the repository in the repository's root. For example, if the repository is named **gh-foobar**, the symbolic link will point to **gh-foobar** in the extension repository's root.
- When executing the extension, the GitHub CLI will run the executable file found by following the symbolic link. If no executable file is found, the extension will fail to execute.
- If the extension is precompiled, the executable file must be built manually and placed in the repository's root.

For the list of available extensions, see ⟨https://github.com/topics/gh-extension⟩.

# [OPTIONS](#OPTIONS)

[**--force**](#force)

Force upgrade extension, or ignore if latest already installed

[**--pin** **&lt;string&gt;**](#pin)

Pin extension to a release tag or commit ref

# [EXIT CODES](#EXIT_CODES)

0: Successful execution

1: Error

2: Command canceled

4: Authentication required

NOTE: Specific commands may have additional exit codes. Refer to the command's help for more information.

# [EXAMPLE](#EXAMPLE)

```
# Install an extension from a remote repository hosted on GitHub
$ gh extension install owner/gh-extension
# Install an extension from a remote repository via full URL
$ gh extension install https://my.ghes.com/owner/gh-extension
# Install an extension from a local repository in the current working directory
$ gh extension install .
```

# [SEE ALSO](#SEE_ALSO)

[**gh-extension(1)**](/man/os/gh/gh-extension.1)

Oct 2026

---

Document: gh-extension-install(1) from gh 2.103.0-r0 (Chainguard OS)
Source: https://github.com/cli/cli
