- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Attachment
- Avatar
- Badge
- Breadcrumb
- Bubble
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Context Menu
- Data Table
- Date Picker
- Dialog
- Direction
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Input OTP
- Item
- Kbd
- Label
- Marker
- Menubar
- Message
- Message Scroller
- Native Select
- Navigation Menu
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
August 2026 - Private GitHub Registries
Install registry items from private GitHub repositories using the GitHub CLI or a token.
GitHub registries now work with private repositories.
In June, we made it possible to turn any public GitHub repository into a registry. Teams asked for the same thing for their internal code: design systems, feature kits, agent rules and conventions that should not be public.
You can now install from private repositories. If you can read the repository, the CLI can install from it.
pnpm dlx shadcn@latest add acme/internal-toolkit/auth-kit
Zero configuration#
If you are logged in to the GitHub CLI, there is nothing to set up.
gh auth loginWhen a repository is not publicly readable, the CLI reads it through gh using
your stored credentials. The token stays inside the GitHub CLI. It never enters
the shadcn process.
✔ Using gh credentials.
✔ Checking registry.
✔ Created 1 file:
- lib/auth.tsCI support#
Where the GitHub CLI is not installed, set GH_TOKEN or GITHUB_TOKEN:
GH_TOKEN=github_pat_xxx npx shadcn@latest add acme/internal-toolkit/auth-kitWe recommend a fine-grained personal access token scoped to the repository with Contents: Read-only access.
Works with every command#
Private repositories work with the same commands as public GitHub registries.
pnpm dlx shadcn@latest list acme/internal-toolkit
pnpm dlx shadcn@latest search acme/internal-toolkit --query auth
pnpm dlx shadcn@latest view acme/internal-toolkit/auth-kit
pnpm dlx shadcn@latest registry validate acme/internal-toolkit
How it works#
- Public repositories are read anonymously, exactly as before. No credentials are used and the GitHub CLI is never invoked.
- The CLI tries anonymous access first and only uses your credentials when the repository is not publicly readable.
- Private files are read through GitHub's Contents API, pinned to the resolved commit SHA.
- A token from
GH_TOKENis only ever sent toapi.github.com. Stored GitHub CLI credentials are read bygh, not by the CLI.
See the Private repositories docs for the full guide.