## Use This Page When a Repository Mirror Cannot Be Created

Use this page when a repository mirror cannot be created, cloned, fetched, pushed to, or accessed by the expected users.

### Unknown command "repo"
Your `entire` binary may be older than the repository mirror commands. Update Entire from the [updating guide](https://docs.entire.io/updating), then try again:

```
entire repo mirror create github.com/OWNER/REPO
```

### The repository is missing from GitHub App access
Confirm that the Entire GitHub App is installed and allowed to access the repository.

1. Open [GitHub installed apps](https://github.com/settings/installations).
2. Find **Entire**.
3. Click **Configure**.
4. Choose **All repositories** or select the repository you want to mirror.
5. Save the GitHub App configuration.

For the full GitHub App setup flow, see [GitHub App Access](https://docs.entire.io/guides/repositories/github-app-access).

### A user cannot create or join a mirror
Check both access requirements:

- The Entire GitHub App can access the repository.
- The user has access to the repository in GitHub.
- The user has signed in with the Entire CLI using `entire login`.

After those are true, the user can create or join the mirror:

```
entire repo mirror create github.com/OWNER/REPO
```

Entire syncs GitHub collaborators into mirror access hourly. If the user recently got GitHub access or recently signed in to Entire, wait for the next sync or have them run `entire repo mirror create github.com/OWNER/REPO`. See [Mirror Access and Permissions](https://docs.entire.io/guides/repositories/mirror-access-and-permissions) for GitHub-synced access, hourly collaborator sync, and self-onboarding.

### Mirror creation takes a while
The default create command waits for the initial GitHub-to-Entire clone to finish. Large repositories can take longer. If you only need to register the mirror and check back later, use `--no-wait`:

```
entire repo mirror create github.com/OWNER/REPO --no-wait
```

### Git cannot clone or fetch from the mirror
First, confirm you are using the `entire://` URL printed by `entire repo mirror create`.

```
git clone entire://aws-us-east-2.entire.io/gh/<owner>/<repo>
```

If the URL is correct:

- Run `entire login` to refresh your Entire session.
- Confirm you have GitHub collaborator access to the repository.
- If your GitHub access changed recently, wait for the next hourly collaborator sync.
- Confirm your network can reach the Entire cluster host in the URL.
- If you added the mirror to an existing checkout, run `git remote -v` and confirm the remote URL.

### Cloning a mirror with LFS files fails during checkout
Mirrors do not currently support Git LFS. When you clone a mirror of a repository that uses LFS, the clone succeeds but checkout fails with a smudge error like:

```
Error downloading object: ... batch request: ssh: Could not resolve hostname entire
error: external filter 'git-lfs filter-process' failed
fatal: <file>: smudge filter lfs failed
```

As a workaround, point Git LFS at GitHub so that large file transfers go through GitHub, while regular Git operations keep using the mirror:

```
git config lfs.url "https://github.com/<owner>/<repo>.git/info/lfs"
```

See [Limitations](https://docs.entire.io/guides/repositories/limitations#git-lfs) for the full workaround, including how to recover a fresh clone that failed at checkout.

### Pushes through the mirror are rejected
Pushes through a mirror are still authenticated with GitHub. If a push is rejected:

- Confirm the user has write access to the GitHub repository.
- Confirm branch protection rules and required checks allow the push.
- Confirm the Entire GitHub App can access the repository.
- Refresh the user’s Entire login.

```
entire auth logout
entire auth login
```

### A pushed branch does not appear on GitHub
Branch names that start with `entire/unmirrored/` are intentionally never synced to GitHub. The branch exists only in the Entire region you pushed it to. To publish the work on GitHub, push the commits to a branch name outside the prefix:

```
git push origin "entire/unmirrored/<branch>:<branch>"
```

See [Unmirrored branches](https://docs.entire.io/guides/repositories/mirrors#unmirrored-branches) for how unmirrored branches work.

### A removed user can still read from a mirror
Removing GitHub access prevents push-through writes because pushes are authenticated with GitHub. Clone and fetch access may continue until the next hourly collaborator sync. See [Mirror Access and Permissions](https://docs.entire.io/guides/repositories/mirror-access-and-permissions#offboard-a-user) for the offboarding flow.

### The mirror was removed but a local checkout still points to it
Removing a server-side mirror placement does not edit local Git configuration. Check the remote in the local checkout:

```
git remote -v
```

To switch back to GitHub:

```
git remote set-url origin git@github.com:<owner>/<repo>.git
```

### Still stuck?
Include these details when asking for help:

- `entire version`
- the GitHub repository URL
- the `entire://` mirror URL
- whether the Entire GitHub App can access the repository
- whether the issue happens during create, clone, fetch, or push
- the full error message

You can file an issue at [github.com/entireio/cli](https://github.com/entireio/cli) or ask in the [Entire Discord](https://discord.gg/jZJs3Tue4S).
