Skip to content

fullsend agent

Manage agent registrations in fullsend config. Add, list, update, and remove agents, or migrate legacy customized/ overrides to config-driven agents.

agent add, agent update, and agent migrate-customizations (non-dry-run) fetch remote content and resolve GitHub URLs. Authentication is via gh CLI or GH_TOKEN environment variable.

Commands

CommandDescription
fullsend agent add <url-or-path>Register an agent in config
fullsend agent listList registered agents
fullsend agent update <name> [sha]Update a URL agent to a new commit SHA
fullsend agent remove <name>Remove an agent from config
fullsend agent migrate-customizationsMigrate customized/ overrides to config-driven agents

agent add

Register an agent in config by URL or local path. URL sources are automatically pinned to a specific commit SHA and annotated with a #sha256=... integrity hash. The URL prefix is added to allowed_remote_resources if not already present.

bash
fullsend agent add https://github.com/my-org/agents/blob/main/harness/lint.yaml --fullsend-dir .fullsend
fullsend agent add harness/custom-review.yaml --name my-review --fullsend-dir .fullsend

Flags

FlagDefaultDescription
--fullsend-dirBase directory containing the .fullsend layout (required)
--namederived from filenameExplicit agent name

GitHub blob URLs are resolved to pinned raw.githubusercontent.com URLs. Non-GitHub URLs must already contain a commit SHA in the path. Local paths must be relative, must not contain path traversal (..), and the file must exist. If an agent with the same name already exists, the command fails.

agent list

List all agents registered in config, showing each agent's name and source.

bash
fullsend agent list --fullsend-dir .fullsend

Flags

FlagDefaultDescription
--fullsend-dirBase directory containing the .fullsend layout (required)

Read-only. Displays a table with NAME and SOURCE columns. For URL agents, the #sha256=... integrity hash suffix is stripped from the displayed source for readability.

Example output:

NAME     SOURCE
triage   https://raw.githubusercontent.com/fullsend-ai/agents/abc123/harness/triage.yaml
my-lint  harness/my-lint.yaml

agent update

Update a URL-based agent to a new commit SHA and recompute the #sha256=... integrity hash. If no SHA is provided, the default branch HEAD is resolved automatically.

bash
fullsend agent update triage --fullsend-dir .fullsend
fullsend agent update triage a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 --fullsend-dir .fullsend

Flags

FlagDefaultDescription
--fullsend-dirBase directory containing the .fullsend layout (required)

Only URL agents can be updated — local path agents have nothing to pin. Non-GitHub URL agents require an explicit SHA argument. The integrity hash is recomputed by fetching the content at the new SHA.

agent remove

Remove an agent from config. If the removed agent was the last one using a given allowed_remote_resources prefix, that prefix is also cleaned up.

bash
fullsend agent remove triage --fullsend-dir .fullsend

Flags

FlagDefaultDescription
--fullsend-dirBase directory containing the .fullsend layout (required)

agent migrate-customizations

Scan the customized/ directory and migrate each override to a config-driven agent. Changes are committed to a branch and delivered via pull request. Use --dry-run to preview changes without creating a PR.

bash
fullsend agent migrate-customizations --fullsend-dir .fullsend --dry-run
fullsend agent migrate-customizations --fullsend-dir .fullsend --repo owner/repo

Flags

FlagDefaultDescription
--fullsend-dirBase directory containing the .fullsend layout (required)
--repoTarget repository (owner/repo) for the migration PR (required unless --dry-run)
--dry-runfalseShow what would change without creating a PR

Override classification

The tool classifies each override and takes the appropriate action:

Override typeDetectionAction
DeadAgent already registered in configDelete customized/ files
CustomNot in upstream scaffoldMove files to regular directories, register local path in config
ModifiedStandard scaffold agent, not yet in configGenerate a base: composition harness with the minimal diff, register in config

For modified agents, the migration produces a thin base: harness containing only the fields that differ from upstream.

See also