> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pup.run/llms.txt
> Use this file to discover all available pages before exploring further.

# Extensions

> Connect tools you host and choose who can use them.

Extensions add remote tools to Pup's assistant. You run the extension server; Pup
controls who can use it and what information it receives. In this version, only
the Discord server owner can register and install their own extensions.

See [Build an extension](https://docs.pup.run/build-an-extension.md)
for the manifest, signing, tool results and compatibility checks.

## Connect your extension

Open **Extensions** in your server's dashboard and enter the HTTPS URL of the
extension's manifest. Save the signing secret on your extension server, then choose
**Test connection**. Pup verifies that the server accepts signed requests before
you can install it.

The signing secret is shown once. Keep it out of source control and ordinary
extension settings. If you replace it, update your extension server within ten
minutes, while the previous secret still works.

## Choose settings and permissions

After installing, fill in the extension's settings and choose an audience for each
tool: only you, selected roles and members, or everyone with extension access.
Members also need **Use extensions** in **Staff access**. Create a custom permission
set with that permission and grant it to the same members or roles. Your owner access remains
available without a role assignment.

Every tool call sends its inputs, the asker's Discord ID, the current channel and
the extension settings. A tool that requests the original message also receives
the member's triggering message and its channel, separately from the assistant's
interpretation. It does not receive the whole conversation. If the extension uses member events, it also receives member
IDs when members join or leave, and you choose the channel where its results may
appear.

The settings screen also shows whether each command's `/` results are public or
visible only to the asker. Commands also work with your server's prefix, such as
`^snacks`; those reply in the channel, like Pup's own prefix commands.

Save these choices, then **Enable extension**. Saving settings alone does not
enable an extension. Never enter passwords, tokens or API keys in its settings.

## Pause, disable or uninstall

Pausing or disabling stops the extension from running. Pup also pauses an
extension after repeated delivery failures; check its server before enabling it
again.

Uninstalling removes its commands, saved settings, approvals and delivery history
from Pup. It does not delete information already sent to the extension's server.
Reinstalling requires setup again.

## Using tools

Ask Pup normally. Pup chooses available tools and writes its reply in the
conversation. Some tasks ask a follow-up question; only the person who started
the request can answer, by replying or with their next message. Long tasks
post updates when progress changes and return a reply when they finish. Some tools
open a thread for the request; you can keep talking to Pup there without mentioning
it again. The thread has the same visibility as its channel.

Pup asks before a write based on outside content, and always asks for tools marked
as irreversible. Approval is limited to the displayed action and inputs. Only the
asker can respond. **Details** opens a private view of the full planned inputs and
available source excerpts; long details arrive as a text file. Opening Details does
not approve anything; the original approval keeps its deadline.

Commands and buttons run without an approval card: running them is the member's own
choice, and the permissions you set decide who can.

Extensions cannot moderate members, change Discord roles or channels, send DMs,
or post outside their invocation or assigned channels. These limits also apply
to self-hosted Pup.

## Your approval preferences

Open **Your approvals** from the server picker or Extensions page to see tools for
which you chose **Auto-review**. Pup checks
that the planned actions match your request and scans the outside content for
injected instructions, and asks you if either flags or can't finish. Irreversible tools and writes after hosted web search
still require your approval.

Choose **Ask next time** to turn off Auto review for a tool. This takes effect
immediately and is recorded in the audit history; it cannot undo actions already
started. You can withdraw your own choices even after losing access to a server.
Other people's choices are never shown here. Turning Auto review off does not add
approval prompts to actions that do not otherwise need approval.

## Operator controls

Installation operators can open **Extension operations** from the server picker.
This requires Pup's operator role; owning a Discord server does not grant it.
The page lists installations, recent event delivery status, attempts and timing,
and global blocks. It does not expose signing secrets, tool inputs or message content.

A **Manifest URL** block matches that exact manifest address. An **Endpoint URL**
block matches that exact address when Pup checks it. A **Domain and subdomains**
block covers the hostname and its subdomains, across paths and ports. URLs are
canonicalized; domains use lowercase ASCII hostnames without wildcards.

Blocks apply across every server and override enabled installation state. They
stop newly checked requests, but cannot undo work already dispatched. Removing a
block lets enabled installations run again unless another block applies. Adding
and removing blocks retains an identifier-only operator history, including after
removal. Keep incident details in your private operational records.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.