[System]
You are a Radicle and Git expert assistant. You help users perform repository operations using rad and git CLI commands via tool calls.

Key rules:
- To create a Radicle patch, use git_push_patch (runs `git push rad HEAD:refs/patches`). Do NOT use `rad patch create` — that command does not exist.
- To update an existing patch with new commits, use git_push with force=true on the patch branch.
- Always use non-interactive flags (--message, --title, --stdin) instead of commands that open an editor.
- When a command needs a patch_id, issue_id, or similar, ask the user or use a list command first to find it.
- For multi-step operations, execute tools one at a time and use the results to inform the next step.

[User] Initialize a new git repo here

[Tool] Initialized empty Git repository in /home/user/project/.git/

[Assistant] Git repository initialized.

List patches in a Radicle repository. By default shows open patches.

Filter by patch state (default: open)

Show all patches including draft, merged, and archived

Filter by author DID

Show only patches authored by the current user

Show details of a specific patch including title, author, state, and revision history.

ID of the patch to show

Also show the diff of changes in the patch

Show the git diff of a specific patch. Shows the diff between the revision's base and head.

ID of the patch

Specific revision to diff (default: latest revision of original author)

Checkout a Git branch pointing to the head of a patch revision.

ID of the patch to checkout

Checkout a specific revision of the patch

Name for the branch to checkout

Force checkout even if the branch already exists

Comment on a patch revision, reply to a comment, edit a comment, or react to a comment.

ID of the revision to comment on

The comment message

Comment ID to reply to

Comment ID to edit

Create a review of a patch revision. Can accept or reject the patch.

ID of the patch to review

Accept the patch revision

Reject the patch revision

Specific revision to review (default: initial revision)

Review message

Do not provide a message

Update the metadata of an EXISTING patch (base commit or description only). This does NOT create a new patch — use git_push_patch to create patches. This does NOT push new code — use git_push with force=true to add a new revision.

ID of the patch to update

Git revision to use as the new base commit

Update message

Do not provide a message

Add or remove assignees to/from a patch.

ID of the patch

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels to/from a patch.

ID of the patch

Labels to add

Labels to remove

Mark a draft patch as open, or convert an open patch back to draft with --undo.

ID of the patch

Convert patch back to a draft

Archive a patch, or unarchive with --undo.

ID of the patch

Unarchive the patch (mark as open)

Delete a patch. Removes patch data associated with the current user.

ID of the patch to delete

Mark a review comment as resolved or unresolved.

ID of the patch

ID of the comment to resolve or unresolve

Open a new issue in the Radicle repository.

Title of the issue

Description of the issue

List issues in the Radicle repository, optionally filtering by state or author.

Filter by issue state

Filter by author DID

Show only assigned issues

Show details of a specific issue including title, state, comments, and labels.

ID of the issue to show

Add a comment to an issue.

ID of the issue

The comment message

Change the state of an issue (close or reopen).

ID of the issue

New state for the issue

Add or remove assignees from an issue.

ID of the issue

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels from an issue.

ID of the issue

Labels to add

Labels to remove

Edit the title and/or description of an existing issue.

ID of the issue to edit

New title for the issue

New description for the issue

Delete an issue.

ID of the issue to delete

Initialize a Git repository for Radicle. Sets up the rad remote and publishes to the network.

Name of the repository

Description of the repository

Default branch name

Set repository visibility to public

Set repository visibility to private

Skip confirmation prompt

Setup upstream of the default branch

Setup radicle key as signing key

Clone a Radicle repository from the network. Also starts seeding the repository by default.

Repository ID to clone (e.g. rad:z31hE1wco9132nedN3mm5qJjyotna)

Target directory for the clone

Follow scope for the repository

NID of a seed to clone from

Create a working copy from a repository already in local Radicle storage.

Repository ID to checkout

DID of a remote peer to checkout

Skip confirmation prompt

Synchronize a repository with the Radicle network. Fetches changes from seeds and announces local refs.

Repository ID to sync (default: current repository)

Only fetch, do not announce

Only announce, do not fetch

Sync with a specific seed node NID

Number of seeds to sync with (default: 3)

Timeout duration (e.g. '10s', '5min')

Announce inventory to the network (standalone mode)

Display the sync status of a repository, showing which seeds have fetched and announced.

Repository ID (default: current repository)

START seeding a repository (begin replicating it on the network). Without arguments, lists currently seeded repos. To STOP seeding, use rad_unseed instead.

Repository ID to seed

Peer follow scope for this repository

Do not fetch repository after updating seeding policy

STOP seeding a repository — remove it from your node's replication. Use when the user says 'stop seeding', 'unseed', or 'don't seed anymore'.

Repository ID to stop seeding

List Radicle repositories.

List only seeded repositories

List all known repositories

Convert a private Radicle repository to public.

Start the Radicle node daemon. Required for network operations.

Stop the Radicle node daemon.

Show the status of the Radicle node including connections and network info.

Instruct the node to connect to another Radicle node.

Node address in format NID@host:port

Show YOUR current Radicle identity — your DID, Node ID, alias, and home directory. Use this when the user asks 'who am I', 'my identity', 'my DID', 'my NID'. This is NOT rad_id_show (which shows a repository identity proposal).

Show only the DID

Show only the Node ID

Show only the Radicle home directory

Create or authenticate a Radicle cryptographic identity.

Display alias for the identity

Read passphrase from stdin (for non-interactive use)

Propose a new revision to the repository identity document. Used to grant/revoke access, rename, etc.

Title describing the identity change

DIDs to grant access to (for private repos)

DIDs to revoke access from

New repository name

New repository description

Skip confirmation prompt

List all proposed revisions to the repository identity document.

Show a specific REPOSITORY identity proposal (not your personal identity). Requires a proposal_id. To see your own identity, use rad_self instead.

ID of the identity proposal to show

Accept a proposed revision to the identity document.

ID of the identity proposal to accept

Reject a proposed revision to the identity document.

ID of the identity proposal to reject

Add a Git remote for a Radicle peer.

Node ID of the peer

Alias for the remote

Remove a Git remote.

Name of the remote to remove

List stored remotes for the current repository, showing both tracked and untracked peers.

Follow a Radicle peer. Without arguments, lists all followed nodes.

Node ID or DID of the peer to follow

Alias for the followed peer

Unfollow a Radicle peer.

Node ID or DID of the peer to unfollow

Block a repository or node from being seeded or followed.

Repository ID (RID) or Node ID (NID) to block

Unblock a repository or node.

Repository ID (RID) or Node ID (NID) to unblock

List notifications in your Radicle inbox. In a repository directory, shows only that repo's notifications.

Show notifications from all repositories

Show a specific notification and mark it as read.

ID of the notification to show

Clear notifications. Cleared notifications are deleted and cannot be restored.

Notification IDs to clear (all if empty)

List all collaborative objects (COBs) of a given type in the repository.

COB type identifier (e.g. 'xyz.radicle.patch', 'xyz.radicle.issue', or custom types)

Print the state of a collaborative object.

COB object ID

COB type identifier

Create a new collaborative object of a given type with initial actions.

COB type identifier

JSON array of initial actions

Add actions to an existing collaborative object.

COB object ID

COB type identifier

JSON array of actions to add

Inspect a Radicle repository, showing delegates, identity, refs, or other metadata.

Repository ID or path (default: current repository)

Show the repository's delegates

Show the identity document

Show identity document history

Show local refs

Show signed refs for all remotes

Show identity payload

Show repository visibility

Return only the repository identifier

Show seeding policy

Show the current Radicle configuration as JSON.

Get a specific value from the Radicle configuration.

Configuration key to get

Set a key to a value in the Radicle configuration.

Configuration key

Value to set

Show the current repository's Radicle Repository ID (RID).

Initialize a new Git repository in the current directory or specified path.

Directory to initialize (default: current directory)

Name for the initial branch (e.g. 'main')

Create a bare repository

Clone a Git repository from a URL.

Repository URL to clone

Target directory

Branch to checkout after cloning

Create a shallow clone with N commits of history

Switch branches or restore working tree files. Use with new_branch=true to create and switch to a new branch (e.g., for starting work on a feature or patch).

Branch, tag, or commit to checkout

Create a new branch with -b flag

Specific files to checkout (restore)

List, create, or delete branches.

Name of branch to create

Name of branch to delete

Name of branch to force delete (-D)

List both local and remote branches

List only remote branches

Rename the current branch to this name

Switch to a different branch.

Branch to switch to

Create the branch if it doesn't exist (-c)

Detach HEAD at the branch

Merge one or more branches into the current branch.

Branch to merge into the current branch

Create a merge commit even for fast-forward merges

Squash all commits into a single commit

Merge commit message

Abort the current merge

Reapply commits on top of another base commit.

Branch or commit to rebase onto

Abort the current rebase

Continue the rebase after resolving conflicts

Apply changes from specific commits onto the current branch.

Commit hashes to cherry-pick

Apply changes without committing

Abort the current cherry-pick

Continue after resolving conflicts

Stage file changes for the next commit. Use this before git_commit. This is NOT git_stash — staging prepares files to be committed, not saved temporarily.

Files or directories to stage

Stage all changes including untracked files

Stage only modified and deleted files (not new files)

Record staged changes to the repository.

Commit message

Automatically stage modified and deleted files before committing

Amend the previous commit

Allow creating a commit with no changes

Reset the current HEAD to a specified state.

Commit to reset to (default: HEAD)

Reset mode: soft (keep staged), mixed (unstage, default), hard (discard all changes)

Specific files to unstage

Temporarily save uncommitted changes to a stash stack, restoring a clean working directory. Only use when the user explicitly wants to stash/shelve changes for later — NOT for staging or committing.

Description of the stash

Also stash untracked files

Apply the most recent stash and remove it from the stash list.

Index of the stash to pop (default: 0, most recent)

Push local commits to a remote repository. Use with force=true to update an EXISTING Radicle patch with new commits (creates a new revision). To create a NEW patch, use git_push_patch instead.

Remote name (e.g. 'origin', 'rad')

Branch to push

Set upstream tracking reference (-u)

Force push (overwrites remote branch)

Push all tags

Create a NEW Radicle patch by running `git push rad HEAD:refs/patches`. This is the ONLY way to create a patch in Radicle — there is no `rad patch create` command. Use this whenever the user wants to submit changes, open a patch, create a PR, or push for review.

Set upstream tracking (-u) so future pushes update the patch

Fetch and integrate changes from a remote repository.

Remote name

Branch to pull

Rebase instead of merge

Download objects and refs from a remote repository without merging.

Remote name (default: origin)

Fetch from all remotes

Remove remote-tracking references that no longer exist

Add a new remote repository.

Name for the remote

URL of the remote repository

Remove a remote repository.

Name of the remote to remove

Show the working tree status — staged, unstaged, and untracked files. Use when the user asks about the current state, what's changed, what's modified, or 'status'.

Show short-format output

Show the commit history.

Maximum number of commits to show

Show each commit on a single line

Show commits from all branches

Show ASCII graph of branch history

Filter by author

Show commits after date (e.g. '2024-01-01', '2 weeks ago')

Show commits affecting this file

Show changes between commits, working tree, and staging area.

Show diff of staged changes (--cached)

Compare against a specific commit or branch

Second ref for comparing two commits (ref..ref2)

Specific files to diff

Show diffstat instead of full diff

Show details of a specific commit including its diff.

Commit, tag, or other object to show (default: HEAD)

Show diffstat instead of full diff

Show who last modified each line of a file.

File to blame

Line range to blame (e.g. '10,20')

Create, list, or delete tags.

Tag name to create

Tag message (creates annotated tag)

Tag name to delete

List all tags

Commit to tag (default: HEAD)

Remove files from the working tree and staging area.

Files to remove

Only remove from staging area, keep file on disk

Remove directories recursively

Move or rename a file, directory, or symlink.

Source path

Destination path

Remove untracked files from the working tree.

Required to actually remove files

Also remove untracked directories (-d)

Show what would be removed without removing (-n)

Also remove ignored files (-x)


[System]
You are a Radicle and Git expert assistant. You help users perform repository operations using rad and git CLI commands via tool calls.

Key rules:
- To create a Radicle patch, use git_push_patch (runs `git push rad HEAD:refs/patches`). Do NOT use `rad patch create` — that command does not exist.
- To update an existing patch with new commits, use git_push with force=true on the patch branch.
- Always use non-interactive flags (--message, --title, --stdin) instead of commands that open an editor.
- When a command needs a patch_id, issue_id, or similar, ask the user or use a list command first to find it.
- For multi-step operations, execute tools one at a time and use the results to inform the next step.

[User] Add a remote for peer z6MknSLrJoTcukLRp5764aYRwMQ9W1TBQbNPR1 and call it alice

[Tool] Remote 'alice' added for z6MknSLrJoTcukLRp5764aYRwMQ9W1TBQbNPR1

[Assistant] Remote 'alice' added. You can now fetch their branches with `git fetch alice`.

List patches in a Radicle repository. By default shows open patches.

Filter by patch state (default: open)

Show all patches including draft, merged, and archived

Filter by author DID

Show only patches authored by the current user

Show details of a specific patch including title, author, state, and revision history.

ID of the patch to show

Also show the diff of changes in the patch

Show the git diff of a specific patch. Shows the diff between the revision's base and head.

ID of the patch

Specific revision to diff (default: latest revision of original author)

Checkout a Git branch pointing to the head of a patch revision.

ID of the patch to checkout

Checkout a specific revision of the patch

Name for the branch to checkout

Force checkout even if the branch already exists

Comment on a patch revision, reply to a comment, edit a comment, or react to a comment.

ID of the revision to comment on

The comment message

Comment ID to reply to

Comment ID to edit

Create a review of a patch revision. Can accept or reject the patch.

ID of the patch to review

Accept the patch revision

Reject the patch revision

Specific revision to review (default: initial revision)

Review message

Do not provide a message

Update the metadata of an EXISTING patch (base commit or description only). This does NOT create a new patch — use git_push_patch to create patches. This does NOT push new code — use git_push with force=true to add a new revision.

ID of the patch to update

Git revision to use as the new base commit

Update message

Do not provide a message

Add or remove assignees to/from a patch.

ID of the patch

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels to/from a patch.

ID of the patch

Labels to add

Labels to remove

Mark a draft patch as open, or convert an open patch back to draft with --undo.

ID of the patch

Convert patch back to a draft

Archive a patch, or unarchive with --undo.

ID of the patch

Unarchive the patch (mark as open)

Delete a patch. Removes patch data associated with the current user.

ID of the patch to delete

Mark a review comment as resolved or unresolved.

ID of the patch

ID of the comment to resolve or unresolve

Open a new issue in the Radicle repository.

Title of the issue

Description of the issue

List issues in the Radicle repository, optionally filtering by state or author.

Filter by issue state

Filter by author DID

Show only assigned issues

Show details of a specific issue including title, state, comments, and labels.

ID of the issue to show

Add a comment to an issue.

ID of the issue

The comment message

Change the state of an issue (close or reopen).

ID of the issue

New state for the issue

Add or remove assignees from an issue.

ID of the issue

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels from an issue.

ID of the issue

Labels to add

Labels to remove

Edit the title and/or description of an existing issue.

ID of the issue to edit

New title for the issue

New description for the issue

Delete an issue.

ID of the issue to delete

Initialize a Git repository for Radicle. Sets up the rad remote and publishes to the network.

Name of the repository

Description of the repository

Default branch name

Set repository visibility to public

Set repository visibility to private

Skip confirmation prompt

Setup upstream of the default branch

Setup radicle key as signing key

Clone a Radicle repository from the network. Also starts seeding the repository by default.

Repository ID to clone (e.g. rad:z31hE1wco9132nedN3mm5qJjyotna)

Target directory for the clone

Follow scope for the repository

NID of a seed to clone from

Create a working copy from a repository already in local Radicle storage.

Repository ID to checkout

DID of a remote peer to checkout

Skip confirmation prompt

Synchronize a repository with the Radicle network. Fetches changes from seeds and announces local refs.

Repository ID to sync (default: current repository)

Only fetch, do not announce

Only announce, do not fetch

Sync with a specific seed node NID

Number of seeds to sync with (default: 3)

Timeout duration (e.g. '10s', '5min')

Announce inventory to the network (standalone mode)

Display the sync status of a repository, showing which seeds have fetched and announced.

Repository ID (default: current repository)

START seeding a repository (begin replicating it on the network). Without arguments, lists currently seeded repos. To STOP seeding, use rad_unseed instead.

Repository ID to seed

Peer follow scope for this repository

Do not fetch repository after updating seeding policy

STOP seeding a repository — remove it from your node's replication. Use when the user says 'stop seeding', 'unseed', or 'don't seed anymore'.

Repository ID to stop seeding

List Radicle repositories.

List only seeded repositories

List all known repositories

Convert a private Radicle repository to public.

Start the Radicle node daemon. Required for network operations.

Stop the Radicle node daemon.

Show the status of the Radicle node including connections and network info.

Instruct the node to connect to another Radicle node.

Node address in format NID@host:port

Show YOUR current Radicle identity — your DID, Node ID, alias, and home directory. Use this when the user asks 'who am I', 'my identity', 'my DID', 'my NID'. This is NOT rad_id_show (which shows a repository identity proposal).

Show only the DID

Show only the Node ID

Show only the Radicle home directory

Create or authenticate a Radicle cryptographic identity.

Display alias for the identity

Read passphrase from stdin (for non-interactive use)

Propose a new revision to the repository identity document. Used to grant/revoke access, rename, etc.

Title describing the identity change

DIDs to grant access to (for private repos)

DIDs to revoke access from

New repository name

New repository description

Skip confirmation prompt

List all proposed revisions to the repository identity document.

Show a specific REPOSITORY identity proposal (not your personal identity). Requires a proposal_id. To see your own identity, use rad_self instead.

ID of the identity proposal to show

Accept a proposed revision to the identity document.

ID of the identity proposal to accept

Reject a proposed revision to the identity document.

ID of the identity proposal to reject

Add a Git remote for a Radicle peer.

Node ID of the peer

Alias for the remote

Remove a Git remote.

Name of the remote to remove

List stored remotes for the current repository, showing both tracked and untracked peers.

Follow a Radicle peer. Without arguments, lists all followed nodes.

Node ID or DID of the peer to follow

Alias for the followed peer

Unfollow a Radicle peer.

Node ID or DID of the peer to unfollow

Block a repository or node from being seeded or followed.

Repository ID (RID) or Node ID (NID) to block

Unblock a repository or node.

Repository ID (RID) or Node ID (NID) to unblock

List notifications in your Radicle inbox. In a repository directory, shows only that repo's notifications.

Show notifications from all repositories

Show a specific notification and mark it as read.

ID of the notification to show

Clear notifications. Cleared notifications are deleted and cannot be restored.

Notification IDs to clear (all if empty)

List all collaborative objects (COBs) of a given type in the repository.

COB type identifier (e.g. 'xyz.radicle.patch', 'xyz.radicle.issue', or custom types)

Print the state of a collaborative object.

COB object ID

COB type identifier

Create a new collaborative object of a given type with initial actions.

COB type identifier

JSON array of initial actions

Add actions to an existing collaborative object.

COB object ID

COB type identifier

JSON array of actions to add

Inspect a Radicle repository, showing delegates, identity, refs, or other metadata.

Repository ID or path (default: current repository)

Show the repository's delegates

Show the identity document

Show identity document history

Show local refs

Show signed refs for all remotes

Show identity payload

Show repository visibility

Return only the repository identifier

Show seeding policy

Show the current Radicle configuration as JSON.

Get a specific value from the Radicle configuration.

Configuration key to get

Set a key to a value in the Radicle configuration.

Configuration key

Value to set

Show the current repository's Radicle Repository ID (RID).

Initialize a new Git repository in the current directory or specified path.

Directory to initialize (default: current directory)

Name for the initial branch (e.g. 'main')

Create a bare repository

Clone a Git repository from a URL.

Repository URL to clone

Target directory

Branch to checkout after cloning

Create a shallow clone with N commits of history

Switch branches or restore working tree files. Use with new_branch=true to create and switch to a new branch (e.g., for starting work on a feature or patch).

Branch, tag, or commit to checkout

Create a new branch with -b flag

Specific files to checkout (restore)

List, create, or delete branches.

Name of branch to create

Name of branch to delete

Name of branch to force delete (-D)

List both local and remote branches

List only remote branches

Rename the current branch to this name

Switch to a different branch.

Branch to switch to

Create the branch if it doesn't exist (-c)

Detach HEAD at the branch

Merge one or more branches into the current branch.

Branch to merge into the current branch

Create a merge commit even for fast-forward merges

Squash all commits into a single commit

Merge commit message

Abort the current merge

Reapply commits on top of another base commit.

Branch or commit to rebase onto

Abort the current rebase

Continue the rebase after resolving conflicts

Apply changes from specific commits onto the current branch.

Commit hashes to cherry-pick

Apply changes without committing

Abort the current cherry-pick

Continue after resolving conflicts

Stage file changes for the next commit. Use this before git_commit. This is NOT git_stash — staging prepares files to be committed, not saved temporarily.

Files or directories to stage

Stage all changes including untracked files

Stage only modified and deleted files (not new files)

Record staged changes to the repository.

Commit message

Automatically stage modified and deleted files before committing

Amend the previous commit

Allow creating a commit with no changes

Reset the current HEAD to a specified state.

Commit to reset to (default: HEAD)

Reset mode: soft (keep staged), mixed (unstage, default), hard (discard all changes)

Specific files to unstage

Temporarily save uncommitted changes to a stash stack, restoring a clean working directory. Only use when the user explicitly wants to stash/shelve changes for later — NOT for staging or committing.

Description of the stash

Also stash untracked files

Apply the most recent stash and remove it from the stash list.

Index of the stash to pop (default: 0, most recent)

Push local commits to a remote repository. Use with force=true to update an EXISTING Radicle patch with new commits (creates a new revision). To create a NEW patch, use git_push_patch instead.

Remote name (e.g. 'origin', 'rad')

Branch to push

Set upstream tracking reference (-u)

Force push (overwrites remote branch)

Push all tags

Create a NEW Radicle patch by running `git push rad HEAD:refs/patches`. This is the ONLY way to create a patch in Radicle — there is no `rad patch create` command. Use this whenever the user wants to submit changes, open a patch, create a PR, or push for review.

Set upstream tracking (-u) so future pushes update the patch

Fetch and integrate changes from a remote repository.

Remote name

Branch to pull

Rebase instead of merge

Download objects and refs from a remote repository without merging.

Remote name (default: origin)

Fetch from all remotes

Remove remote-tracking references that no longer exist

Add a new remote repository.

Name for the remote

URL of the remote repository

Remove a remote repository.

Name of the remote to remove

Show the working tree status — staged, unstaged, and untracked files. Use when the user asks about the current state, what's changed, what's modified, or 'status'.

Show short-format output

Show the commit history.

Maximum number of commits to show

Show each commit on a single line

Show commits from all branches

Show ASCII graph of branch history

Filter by author

Show commits after date (e.g. '2024-01-01', '2 weeks ago')

Show commits affecting this file

Show changes between commits, working tree, and staging area.

Show diff of staged changes (--cached)

Compare against a specific commit or branch

Second ref for comparing two commits (ref..ref2)

Specific files to diff

Show diffstat instead of full diff

Show details of a specific commit including its diff.

Commit, tag, or other object to show (default: HEAD)

Show diffstat instead of full diff

Show who last modified each line of a file.

File to blame

Line range to blame (e.g. '10,20')

Create, list, or delete tags.

Tag name to create

Tag message (creates annotated tag)

Tag name to delete

List all tags

Commit to tag (default: HEAD)

Remove files from the working tree and staging area.

Files to remove

Only remove from staging area, keep file on disk

Remove directories recursively

Move or rename a file, directory, or symlink.

Source path

Destination path

Remove untracked files from the working tree.

Required to actually remove files

Also remove untracked directories (-d)

Show what would be removed without removing (-n)

Also remove ignored files (-x)


[System]
You are a Radicle and Git expert assistant. You help users perform repository operations using rad and git CLI commands via tool calls.

Key rules:
- To create a Radicle patch, use git_push_patch (runs `git push rad HEAD:refs/patches`). Do NOT use `rad patch create` — that command does not exist.
- To update an existing patch with new commits, use git_push with force=true on the patch branch.
- Always use non-interactive flags (--message, --title, --stdin) instead of commands that open an editor.
- When a command needs a patch_id, issue_id, or similar, ask the user or use a list command first to find it.
- For multi-step operations, execute tools one at a time and use the results to inform the next step.

[User] submit a bug report about typo in the getting started guide

[Tool] Issue created: 9dfa184

[Assistant] Created issue **9dfa184** — "Bug: typo in the getting started guide".

List patches in a Radicle repository. By default shows open patches.

Filter by patch state (default: open)

Show all patches including draft, merged, and archived

Filter by author DID

Show only patches authored by the current user

Show details of a specific patch including title, author, state, and revision history.

ID of the patch to show

Also show the diff of changes in the patch

Show the git diff of a specific patch. Shows the diff between the revision's base and head.

ID of the patch

Specific revision to diff (default: latest revision of original author)

Checkout a Git branch pointing to the head of a patch revision.

ID of the patch to checkout

Checkout a specific revision of the patch

Name for the branch to checkout

Force checkout even if the branch already exists

Comment on a patch revision, reply to a comment, edit a comment, or react to a comment.

ID of the revision to comment on

The comment message

Comment ID to reply to

Comment ID to edit

Create a review of a patch revision. Can accept or reject the patch.

ID of the patch to review

Accept the patch revision

Reject the patch revision

Specific revision to review (default: initial revision)

Review message

Do not provide a message

Update the metadata of an EXISTING patch (base commit or description only). This does NOT create a new patch — use git_push_patch to create patches. This does NOT push new code — use git_push with force=true to add a new revision.

ID of the patch to update

Git revision to use as the new base commit

Update message

Do not provide a message

Add or remove assignees to/from a patch.

ID of the patch

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels to/from a patch.

ID of the patch

Labels to add

Labels to remove

Mark a draft patch as open, or convert an open patch back to draft with --undo.

ID of the patch

Convert patch back to a draft

Archive a patch, or unarchive with --undo.

ID of the patch

Unarchive the patch (mark as open)

Delete a patch. Removes patch data associated with the current user.

ID of the patch to delete

Mark a review comment as resolved or unresolved.

ID of the patch

ID of the comment to resolve or unresolve

Open a new issue in the Radicle repository.

Title of the issue

Description of the issue

List issues in the Radicle repository, optionally filtering by state or author.

Filter by issue state

Filter by author DID

Show only assigned issues

Show details of a specific issue including title, state, comments, and labels.

ID of the issue to show

Add a comment to an issue.

ID of the issue

The comment message

Change the state of an issue (close or reopen).

ID of the issue

New state for the issue

Add or remove assignees from an issue.

ID of the issue

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels from an issue.

ID of the issue

Labels to add

Labels to remove

Edit the title and/or description of an existing issue.

ID of the issue to edit

New title for the issue

New description for the issue

Delete an issue.

ID of the issue to delete

Initialize a Git repository for Radicle. Sets up the rad remote and publishes to the network.

Name of the repository

Description of the repository

Default branch name

Set repository visibility to public

Set repository visibility to private

Skip confirmation prompt

Setup upstream of the default branch

Setup radicle key as signing key

Clone a Radicle repository from the network. Also starts seeding the repository by default.

Repository ID to clone (e.g. rad:z31hE1wco9132nedN3mm5qJjyotna)

Target directory for the clone

Follow scope for the repository

NID of a seed to clone from

Create a working copy from a repository already in local Radicle storage.

Repository ID to checkout

DID of a remote peer to checkout

Skip confirmation prompt

Synchronize a repository with the Radicle network. Fetches changes from seeds and announces local refs.

Repository ID to sync (default: current repository)

Only fetch, do not announce

Only announce, do not fetch

Sync with a specific seed node NID

Number of seeds to sync with (default: 3)

Timeout duration (e.g. '10s', '5min')

Announce inventory to the network (standalone mode)

Display the sync status of a repository, showing which seeds have fetched and announced.

Repository ID (default: current repository)

START seeding a repository (begin replicating it on the network). Without arguments, lists currently seeded repos. To STOP seeding, use rad_unseed instead.

Repository ID to seed

Peer follow scope for this repository

Do not fetch repository after updating seeding policy

STOP seeding a repository — remove it from your node's replication. Use when the user says 'stop seeding', 'unseed', or 'don't seed anymore'.

Repository ID to stop seeding

List Radicle repositories.

List only seeded repositories

List all known repositories

Convert a private Radicle repository to public.

Start the Radicle node daemon. Required for network operations.

Stop the Radicle node daemon.

Show the status of the Radicle node including connections and network info.

Instruct the node to connect to another Radicle node.

Node address in format NID@host:port

Show YOUR current Radicle identity — your DID, Node ID, alias, and home directory. Use this when the user asks 'who am I', 'my identity', 'my DID', 'my NID'. This is NOT rad_id_show (which shows a repository identity proposal).

Show only the DID

Show only the Node ID

Show only the Radicle home directory

Create or authenticate a Radicle cryptographic identity.

Display alias for the identity

Read passphrase from stdin (for non-interactive use)

Propose a new revision to the repository identity document. Used to grant/revoke access, rename, etc.

Title describing the identity change

DIDs to grant access to (for private repos)

DIDs to revoke access from

New repository name

New repository description

Skip confirmation prompt

List all proposed revisions to the repository identity document.

Show a specific REPOSITORY identity proposal (not your personal identity). Requires a proposal_id. To see your own identity, use rad_self instead.

ID of the identity proposal to show

Accept a proposed revision to the identity document.

ID of the identity proposal to accept

Reject a proposed revision to the identity document.

ID of the identity proposal to reject

Add a Git remote for a Radicle peer.

Node ID of the peer

Alias for the remote

Remove a Git remote.

Name of the remote to remove

List stored remotes for the current repository, showing both tracked and untracked peers.

Follow a Radicle peer. Without arguments, lists all followed nodes.

Node ID or DID of the peer to follow

Alias for the followed peer

Unfollow a Radicle peer.

Node ID or DID of the peer to unfollow

Block a repository or node from being seeded or followed.

Repository ID (RID) or Node ID (NID) to block

Unblock a repository or node.

Repository ID (RID) or Node ID (NID) to unblock

List notifications in your Radicle inbox. In a repository directory, shows only that repo's notifications.

Show notifications from all repositories

Show a specific notification and mark it as read.

ID of the notification to show

Clear notifications. Cleared notifications are deleted and cannot be restored.

Notification IDs to clear (all if empty)

List all collaborative objects (COBs) of a given type in the repository.

COB type identifier (e.g. 'xyz.radicle.patch', 'xyz.radicle.issue', or custom types)

Print the state of a collaborative object.

COB object ID

COB type identifier

Create a new collaborative object of a given type with initial actions.

COB type identifier

JSON array of initial actions

Add actions to an existing collaborative object.

COB object ID

COB type identifier

JSON array of actions to add

Inspect a Radicle repository, showing delegates, identity, refs, or other metadata.

Repository ID or path (default: current repository)

Show the repository's delegates

Show the identity document

Show identity document history

Show local refs

Show signed refs for all remotes

Show identity payload

Show repository visibility

Return only the repository identifier

Show seeding policy

Show the current Radicle configuration as JSON.

Get a specific value from the Radicle configuration.

Configuration key to get

Set a key to a value in the Radicle configuration.

Configuration key

Value to set

Show the current repository's Radicle Repository ID (RID).

Initialize a new Git repository in the current directory or specified path.

Directory to initialize (default: current directory)

Name for the initial branch (e.g. 'main')

Create a bare repository

Clone a Git repository from a URL.

Repository URL to clone

Target directory

Branch to checkout after cloning

Create a shallow clone with N commits of history

Switch branches or restore working tree files. Use with new_branch=true to create and switch to a new branch (e.g., for starting work on a feature or patch).

Branch, tag, or commit to checkout

Create a new branch with -b flag

Specific files to checkout (restore)

List, create, or delete branches.

Name of branch to create

Name of branch to delete

Name of branch to force delete (-D)

List both local and remote branches

List only remote branches

Rename the current branch to this name

Switch to a different branch.

Branch to switch to

Create the branch if it doesn't exist (-c)

Detach HEAD at the branch

Merge one or more branches into the current branch.

Branch to merge into the current branch

Create a merge commit even for fast-forward merges

Squash all commits into a single commit

Merge commit message

Abort the current merge

Reapply commits on top of another base commit.

Branch or commit to rebase onto

Abort the current rebase

Continue the rebase after resolving conflicts

Apply changes from specific commits onto the current branch.

Commit hashes to cherry-pick

Apply changes without committing

Abort the current cherry-pick

Continue after resolving conflicts

Stage file changes for the next commit. Use this before git_commit. This is NOT git_stash — staging prepares files to be committed, not saved temporarily.

Files or directories to stage

Stage all changes including untracked files

Stage only modified and deleted files (not new files)

Record staged changes to the repository.

Commit message

Automatically stage modified and deleted files before committing

Amend the previous commit

Allow creating a commit with no changes

Reset the current HEAD to a specified state.

Commit to reset to (default: HEAD)

Reset mode: soft (keep staged), mixed (unstage, default), hard (discard all changes)

Specific files to unstage

Temporarily save uncommitted changes to a stash stack, restoring a clean working directory. Only use when the user explicitly wants to stash/shelve changes for later — NOT for staging or committing.

Description of the stash

Also stash untracked files

Apply the most recent stash and remove it from the stash list.

Index of the stash to pop (default: 0, most recent)

Push local commits to a remote repository. Use with force=true to update an EXISTING Radicle patch with new commits (creates a new revision). To create a NEW patch, use git_push_patch instead.

Remote name (e.g. 'origin', 'rad')

Branch to push

Set upstream tracking reference (-u)

Force push (overwrites remote branch)

Push all tags

Create a NEW Radicle patch by running `git push rad HEAD:refs/patches`. This is the ONLY way to create a patch in Radicle — there is no `rad patch create` command. Use this whenever the user wants to submit changes, open a patch, create a PR, or push for review.

Set upstream tracking (-u) so future pushes update the patch

Fetch and integrate changes from a remote repository.

Remote name

Branch to pull

Rebase instead of merge

Download objects and refs from a remote repository without merging.

Remote name (default: origin)

Fetch from all remotes

Remove remote-tracking references that no longer exist

Add a new remote repository.

Name for the remote

URL of the remote repository

Remove a remote repository.

Name of the remote to remove

Show the working tree status — staged, unstaged, and untracked files. Use when the user asks about the current state, what's changed, what's modified, or 'status'.

Show short-format output

Show the commit history.

Maximum number of commits to show

Show each commit on a single line

Show commits from all branches

Show ASCII graph of branch history

Filter by author

Show commits after date (e.g. '2024-01-01', '2 weeks ago')

Show commits affecting this file

Show changes between commits, working tree, and staging area.

Show diff of staged changes (--cached)

Compare against a specific commit or branch

Second ref for comparing two commits (ref..ref2)

Specific files to diff

Show diffstat instead of full diff

Show details of a specific commit including its diff.

Commit, tag, or other object to show (default: HEAD)

Show diffstat instead of full diff

Show who last modified each line of a file.

File to blame

Line range to blame (e.g. '10,20')

Create, list, or delete tags.

Tag name to create

Tag message (creates annotated tag)

Tag name to delete

List all tags

Commit to tag (default: HEAD)

Remove files from the working tree and staging area.

Files to remove

Only remove from staging area, keep file on disk

Remove directories recursively

Move or rename a file, directory, or symlink.

Source path

Destination path

Remove untracked files from the working tree.

Required to actually remove files

Also remove untracked directories (-d)

Show what would be removed without removing (-n)

Also remove ignored files (-x)


[System]
You are a Radicle and Git expert assistant. You help users perform repository operations using rad and git CLI commands via tool calls.

Key rules:
- To create a Radicle patch, use git_push_patch (runs `git push rad HEAD:refs/patches`). Do NOT use `rad patch create` — that command does not exist.
- To update an existing patch with new commits, use git_push with force=true on the patch branch.
- Always use non-interactive flags (--message, --title, --stdin) instead of commands that open an editor.
- When a command needs a patch_id, issue_id, or similar, ask the user or use a list command first to find it.
- For multi-step operations, execute tools one at a time and use the results to inform the next step.

[User] unseed rad:z5Pq8eF1htJk6GMsUnOp0482ielcwJlF

[Tool] Unseeded rad:z5Pq8eF1htJk6GMsUnOp0482ielcwJlF

[Assistant] Stopped seeding `rad:z5Pq8eF1htJk6GMsUnOp0482ielcwJlF`.

List patches in a Radicle repository. By default shows open patches.

Filter by patch state (default: open)

Show all patches including draft, merged, and archived

Filter by author DID

Show only patches authored by the current user

Show details of a specific patch including title, author, state, and revision history.

ID of the patch to show

Also show the diff of changes in the patch

Show the git diff of a specific patch. Shows the diff between the revision's base and head.

ID of the patch

Specific revision to diff (default: latest revision of original author)

Checkout a Git branch pointing to the head of a patch revision.

ID of the patch to checkout

Checkout a specific revision of the patch

Name for the branch to checkout

Force checkout even if the branch already exists

Comment on a patch revision, reply to a comment, edit a comment, or react to a comment.

ID of the revision to comment on

The comment message

Comment ID to reply to

Comment ID to edit

Create a review of a patch revision. Can accept or reject the patch.

ID of the patch to review

Accept the patch revision

Reject the patch revision

Specific revision to review (default: initial revision)

Review message

Do not provide a message

Update the metadata of an EXISTING patch (base commit or description only). This does NOT create a new patch — use git_push_patch to create patches. This does NOT push new code — use git_push with force=true to add a new revision.

ID of the patch to update

Git revision to use as the new base commit

Update message

Do not provide a message

Add or remove assignees to/from a patch.

ID of the patch

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels to/from a patch.

ID of the patch

Labels to add

Labels to remove

Mark a draft patch as open, or convert an open patch back to draft with --undo.

ID of the patch

Convert patch back to a draft

Archive a patch, or unarchive with --undo.

ID of the patch

Unarchive the patch (mark as open)

Delete a patch. Removes patch data associated with the current user.

ID of the patch to delete

Mark a review comment as resolved or unresolved.

ID of the patch

ID of the comment to resolve or unresolve

Open a new issue in the Radicle repository.

Title of the issue

Description of the issue

List issues in the Radicle repository, optionally filtering by state or author.

Filter by issue state

Filter by author DID

Show only assigned issues

Show details of a specific issue including title, state, comments, and labels.

ID of the issue to show

Add a comment to an issue.

ID of the issue

The comment message

Change the state of an issue (close or reopen).

ID of the issue

New state for the issue

Add or remove assignees from an issue.

ID of the issue

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels from an issue.

ID of the issue

Labels to add

Labels to remove

Edit the title and/or description of an existing issue.

ID of the issue to edit

New title for the issue

New description for the issue

Delete an issue.

ID of the issue to delete

Initialize a Git repository for Radicle. Sets up the rad remote and publishes to the network.

Name of the repository

Description of the repository

Default branch name

Set repository visibility to public

Set repository visibility to private

Skip confirmation prompt

Setup upstream of the default branch

Setup radicle key as signing key

Clone a Radicle repository from the network. Also starts seeding the repository by default.

Repository ID to clone (e.g. rad:z31hE1wco9132nedN3mm5qJjyotna)

Target directory for the clone

Follow scope for the repository

NID of a seed to clone from

Create a working copy from a repository already in local Radicle storage.

Repository ID to checkout

DID of a remote peer to checkout

Skip confirmation prompt

Synchronize a repository with the Radicle network. Fetches changes from seeds and announces local refs.

Repository ID to sync (default: current repository)

Only fetch, do not announce

Only announce, do not fetch

Sync with a specific seed node NID

Number of seeds to sync with (default: 3)

Timeout duration (e.g. '10s', '5min')

Announce inventory to the network (standalone mode)

Display the sync status of a repository, showing which seeds have fetched and announced.

Repository ID (default: current repository)

START seeding a repository (begin replicating it on the network). Without arguments, lists currently seeded repos. To STOP seeding, use rad_unseed instead.

Repository ID to seed

Peer follow scope for this repository

Do not fetch repository after updating seeding policy

STOP seeding a repository — remove it from your node's replication. Use when the user says 'stop seeding', 'unseed', or 'don't seed anymore'.

Repository ID to stop seeding

List Radicle repositories.

List only seeded repositories

List all known repositories

Convert a private Radicle repository to public.

Start the Radicle node daemon. Required for network operations.

Stop the Radicle node daemon.

Show the status of the Radicle node including connections and network info.

Instruct the node to connect to another Radicle node.

Node address in format NID@host:port

Show YOUR current Radicle identity — your DID, Node ID, alias, and home directory. Use this when the user asks 'who am I', 'my identity', 'my DID', 'my NID'. This is NOT rad_id_show (which shows a repository identity proposal).

Show only the DID

Show only the Node ID

Show only the Radicle home directory

Create or authenticate a Radicle cryptographic identity.

Display alias for the identity

Read passphrase from stdin (for non-interactive use)

Propose a new revision to the repository identity document. Used to grant/revoke access, rename, etc.

Title describing the identity change

DIDs to grant access to (for private repos)

DIDs to revoke access from

New repository name

New repository description

Skip confirmation prompt

List all proposed revisions to the repository identity document.

Show a specific REPOSITORY identity proposal (not your personal identity). Requires a proposal_id. To see your own identity, use rad_self instead.

ID of the identity proposal to show

Accept a proposed revision to the identity document.

ID of the identity proposal to accept

Reject a proposed revision to the identity document.

ID of the identity proposal to reject

Add a Git remote for a Radicle peer.

Node ID of the peer

Alias for the remote

Remove a Git remote.

Name of the remote to remove

List stored remotes for the current repository, showing both tracked and untracked peers.

Follow a Radicle peer. Without arguments, lists all followed nodes.

Node ID or DID of the peer to follow

Alias for the followed peer

Unfollow a Radicle peer.

Node ID or DID of the peer to unfollow

Block a repository or node from being seeded or followed.

Repository ID (RID) or Node ID (NID) to block

Unblock a repository or node.

Repository ID (RID) or Node ID (NID) to unblock

List notifications in your Radicle inbox. In a repository directory, shows only that repo's notifications.

Show notifications from all repositories

Show a specific notification and mark it as read.

ID of the notification to show

Clear notifications. Cleared notifications are deleted and cannot be restored.

Notification IDs to clear (all if empty)

List all collaborative objects (COBs) of a given type in the repository.

COB type identifier (e.g. 'xyz.radicle.patch', 'xyz.radicle.issue', or custom types)

Print the state of a collaborative object.

COB object ID

COB type identifier

Create a new collaborative object of a given type with initial actions.

COB type identifier

JSON array of initial actions

Add actions to an existing collaborative object.

COB object ID

COB type identifier

JSON array of actions to add

Inspect a Radicle repository, showing delegates, identity, refs, or other metadata.

Repository ID or path (default: current repository)

Show the repository's delegates

Show the identity document

Show identity document history

Show local refs

Show signed refs for all remotes

Show identity payload

Show repository visibility

Return only the repository identifier

Show seeding policy

Show the current Radicle configuration as JSON.

Get a specific value from the Radicle configuration.

Configuration key to get

Set a key to a value in the Radicle configuration.

Configuration key

Value to set

Show the current repository's Radicle Repository ID (RID).

Initialize a new Git repository in the current directory or specified path.

Directory to initialize (default: current directory)

Name for the initial branch (e.g. 'main')

Create a bare repository

Clone a Git repository from a URL.

Repository URL to clone

Target directory

Branch to checkout after cloning

Create a shallow clone with N commits of history

Switch branches or restore working tree files. Use with new_branch=true to create and switch to a new branch (e.g., for starting work on a feature or patch).

Branch, tag, or commit to checkout

Create a new branch with -b flag

Specific files to checkout (restore)

List, create, or delete branches.

Name of branch to create

Name of branch to delete

Name of branch to force delete (-D)

List both local and remote branches

List only remote branches

Rename the current branch to this name

Switch to a different branch.

Branch to switch to

Create the branch if it doesn't exist (-c)

Detach HEAD at the branch

Merge one or more branches into the current branch.

Branch to merge into the current branch

Create a merge commit even for fast-forward merges

Squash all commits into a single commit

Merge commit message

Abort the current merge

Reapply commits on top of another base commit.

Branch or commit to rebase onto

Abort the current rebase

Continue the rebase after resolving conflicts

Apply changes from specific commits onto the current branch.

Commit hashes to cherry-pick

Apply changes without committing

Abort the current cherry-pick

Continue after resolving conflicts

Stage file changes for the next commit. Use this before git_commit. This is NOT git_stash — staging prepares files to be committed, not saved temporarily.

Files or directories to stage

Stage all changes including untracked files

Stage only modified and deleted files (not new files)

Record staged changes to the repository.

Commit message

Automatically stage modified and deleted files before committing

Amend the previous commit

Allow creating a commit with no changes

Reset the current HEAD to a specified state.

Commit to reset to (default: HEAD)

Reset mode: soft (keep staged), mixed (unstage, default), hard (discard all changes)

Specific files to unstage

Temporarily save uncommitted changes to a stash stack, restoring a clean working directory. Only use when the user explicitly wants to stash/shelve changes for later — NOT for staging or committing.

Description of the stash

Also stash untracked files

Apply the most recent stash and remove it from the stash list.

Index of the stash to pop (default: 0, most recent)

Push local commits to a remote repository. Use with force=true to update an EXISTING Radicle patch with new commits (creates a new revision). To create a NEW patch, use git_push_patch instead.

Remote name (e.g. 'origin', 'rad')

Branch to push

Set upstream tracking reference (-u)

Force push (overwrites remote branch)

Push all tags

Create a NEW Radicle patch by running `git push rad HEAD:refs/patches`. This is the ONLY way to create a patch in Radicle — there is no `rad patch create` command. Use this whenever the user wants to submit changes, open a patch, create a PR, or push for review.

Set upstream tracking (-u) so future pushes update the patch

Fetch and integrate changes from a remote repository.

Remote name

Branch to pull

Rebase instead of merge

Download objects and refs from a remote repository without merging.

Remote name (default: origin)

Fetch from all remotes

Remove remote-tracking references that no longer exist

Add a new remote repository.

Name for the remote

URL of the remote repository

Remove a remote repository.

Name of the remote to remove

Show the working tree status — staged, unstaged, and untracked files. Use when the user asks about the current state, what's changed, what's modified, or 'status'.

Show short-format output

Show the commit history.

Maximum number of commits to show

Show each commit on a single line

Show commits from all branches

Show ASCII graph of branch history

Filter by author

Show commits after date (e.g. '2024-01-01', '2 weeks ago')

Show commits affecting this file

Show changes between commits, working tree, and staging area.

Show diff of staged changes (--cached)

Compare against a specific commit or branch

Second ref for comparing two commits (ref..ref2)

Specific files to diff

Show diffstat instead of full diff

Show details of a specific commit including its diff.

Commit, tag, or other object to show (default: HEAD)

Show diffstat instead of full diff

Show who last modified each line of a file.

File to blame

Line range to blame (e.g. '10,20')

Create, list, or delete tags.

Tag name to create

Tag message (creates annotated tag)

Tag name to delete

List all tags

Commit to tag (default: HEAD)

Remove files from the working tree and staging area.

Files to remove

Only remove from staging area, keep file on disk

Remove directories recursively

Move or rename a file, directory, or symlink.

Source path

Destination path

Remove untracked files from the working tree.

Required to actually remove files

Also remove untracked directories (-d)

Show what would be removed without removing (-n)

Also remove ignored files (-x)


[System]
You are a Radicle and Git expert assistant. You help users perform repository operations using rad and git CLI commands via tool calls.

Key rules:
- To create a Radicle patch, use git_push_patch (runs `git push rad HEAD:refs/patches`). Do NOT use `rad patch create` — that command does not exist.
- To update an existing patch with new commits, use git_push with force=true on the patch branch.
- Always use non-interactive flags (--message, --title, --stdin) instead of commands that open an editor.
- When a command needs a patch_id, issue_id, or similar, ask the user or use a list command first to find it.
- For multi-step operations, execute tools one at a time and use the results to inform the next step.

[User] the patch needs updating

[Tool]
To rad:z5Pq8eF1htJk6GMsUnOp0482ielcwJlF
 + 4ffd13a...f05fc3d fix/sync-timeout -> patches/1df9f84 (forced update)

[Assistant] Done — new revision pushed to the patch.

List patches in a Radicle repository. By default shows open patches.

Filter by patch state (default: open)

Show all patches including draft, merged, and archived

Filter by author DID

Show only patches authored by the current user

Show details of a specific patch including title, author, state, and revision history.

ID of the patch to show

Also show the diff of changes in the patch

Show the git diff of a specific patch. Shows the diff between the revision's base and head.

ID of the patch

Specific revision to diff (default: latest revision of original author)

Checkout a Git branch pointing to the head of a patch revision.

ID of the patch to checkout

Checkout a specific revision of the patch

Name for the branch to checkout

Force checkout even if the branch already exists

Comment on a patch revision, reply to a comment, edit a comment, or react to a comment.

ID of the revision to comment on

The comment message

Comment ID to reply to

Comment ID to edit

Create a review of a patch revision. Can accept or reject the patch.

ID of the patch to review

Accept the patch revision

Reject the patch revision

Specific revision to review (default: initial revision)

Review message

Do not provide a message

Update the metadata of an EXISTING patch (base commit or description only). This does NOT create a new patch — use git_push_patch to create patches. This does NOT push new code — use git_push with force=true to add a new revision.

ID of the patch to update

Git revision to use as the new base commit

Update message

Do not provide a message

Add or remove assignees to/from a patch.

ID of the patch

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels to/from a patch.

ID of the patch

Labels to add

Labels to remove

Mark a draft patch as open, or convert an open patch back to draft with --undo.

ID of the patch

Convert patch back to a draft

Archive a patch, or unarchive with --undo.

ID of the patch

Unarchive the patch (mark as open)

Delete a patch. Removes patch data associated with the current user.

ID of the patch to delete

Mark a review comment as resolved or unresolved.

ID of the patch

ID of the comment to resolve or unresolve

Open a new issue in the Radicle repository.

Title of the issue

Description of the issue

List issues in the Radicle repository, optionally filtering by state or author.

Filter by issue state

Filter by author DID

Show only assigned issues

Show details of a specific issue including title, state, comments, and labels.

ID of the issue to show

Add a comment to an issue.

ID of the issue

The comment message

Change the state of an issue (close or reopen).

ID of the issue

New state for the issue

Add or remove assignees from an issue.

ID of the issue

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels from an issue.

ID of the issue

Labels to add

Labels to remove

Edit the title and/or description of an existing issue.

ID of the issue to edit

New title for the issue

New description for the issue

Delete an issue.

ID of the issue to delete

Initialize a Git repository for Radicle. Sets up the rad remote and publishes to the network.

Name of the repository

Description of the repository

Default branch name

Set repository visibility to public

Set repository visibility to private

Skip confirmation prompt

Setup upstream of the default branch

Setup radicle key as signing key

Clone a Radicle repository from the network. Also starts seeding the repository by default.

Repository ID to clone (e.g. rad:z31hE1wco9132nedN3mm5qJjyotna)

Target directory for the clone

Follow scope for the repository

NID of a seed to clone from

Create a working copy from a repository already in local Radicle storage.

Repository ID to checkout

DID of a remote peer to checkout

Skip confirmation prompt

Synchronize a repository with the Radicle network. Fetches changes from seeds and announces local refs.

Repository ID to sync (default: current repository)

Only fetch, do not announce

Only announce, do not fetch

Sync with a specific seed node NID

Number of seeds to sync with (default: 3)

Timeout duration (e.g. '10s', '5min')

Announce inventory to the network (standalone mode)

Display the sync status of a repository, showing which seeds have fetched and announced.

Repository ID (default: current repository)

START seeding a repository (begin replicating it on the network). Without arguments, lists currently seeded repos. To STOP seeding, use rad_unseed instead.

Repository ID to seed

Peer follow scope for this repository

Do not fetch repository after updating seeding policy

STOP seeding a repository — remove it from your node's replication. Use when the user says 'stop seeding', 'unseed', or 'don't seed anymore'.

Repository ID to stop seeding

List Radicle repositories.

List only seeded repositories

List all known repositories

Convert a private Radicle repository to public.

Start the Radicle node daemon. Required for network operations.

Stop the Radicle node daemon.

Show the status of the Radicle node including connections and network info.

Instruct the node to connect to another Radicle node.

Node address in format NID@host:port

Show YOUR current Radicle identity — your DID, Node ID, alias, and home directory. Use this when the user asks 'who am I', 'my identity', 'my DID', 'my NID'. This is NOT rad_id_show (which shows a repository identity proposal).

Show only the DID

Show only the Node ID

Show only the Radicle home directory

Create or authenticate a Radicle cryptographic identity.

Display alias for the identity

Read passphrase from stdin (for non-interactive use)

Propose a new revision to the repository identity document. Used to grant/revoke access, rename, etc.

Title describing the identity change

DIDs to grant access to (for private repos)

DIDs to revoke access from

New repository name

New repository description

Skip confirmation prompt

List all proposed revisions to the repository identity document.

Show a specific REPOSITORY identity proposal (not your personal identity). Requires a proposal_id. To see your own identity, use rad_self instead.

ID of the identity proposal to show

Accept a proposed revision to the identity document.

ID of the identity proposal to accept

Reject a proposed revision to the identity document.

ID of the identity proposal to reject

Add a Git remote for a Radicle peer.

Node ID of the peer

Alias for the remote

Remove a Git remote.

Name of the remote to remove

List stored remotes for the current repository, showing both tracked and untracked peers.

Follow a Radicle peer. Without arguments, lists all followed nodes.

Node ID or DID of the peer to follow

Alias for the followed peer

Unfollow a Radicle peer.

Node ID or DID of the peer to unfollow

Block a repository or node from being seeded or followed.

Repository ID (RID) or Node ID (NID) to block

Unblock a repository or node.

Repository ID (RID) or Node ID (NID) to unblock

List notifications in your Radicle inbox. In a repository directory, shows only that repo's notifications.

Show notifications from all repositories

Show a specific notification and mark it as read.

ID of the notification to show

Clear notifications. Cleared notifications are deleted and cannot be restored.

Notification IDs to clear (all if empty)

List all collaborative objects (COBs) of a given type in the repository.

COB type identifier (e.g. 'xyz.radicle.patch', 'xyz.radicle.issue', or custom types)

Print the state of a collaborative object.

COB object ID

COB type identifier

Create a new collaborative object of a given type with initial actions.

COB type identifier

JSON array of initial actions

Add actions to an existing collaborative object.

COB object ID

COB type identifier

JSON array of actions to add

Inspect a Radicle repository, showing delegates, identity, refs, or other metadata.

Repository ID or path (default: current repository)

Show the repository's delegates

Show the identity document

Show identity document history

Show local refs

Show signed refs for all remotes

Show identity payload

Show repository visibility

Return only the repository identifier

Show seeding policy

Show the current Radicle configuration as JSON.

Get a specific value from the Radicle configuration.

Configuration key to get

Set a key to a value in the Radicle configuration.

Configuration key

Value to set

Show the current repository's Radicle Repository ID (RID).

Initialize a new Git repository in the current directory or specified path.

Directory to initialize (default: current directory)

Name for the initial branch (e.g. 'main')

Create a bare repository

Clone a Git repository from a URL.

Repository URL to clone

Target directory

Branch to checkout after cloning

Create a shallow clone with N commits of history

Switch branches or restore working tree files. Use with new_branch=true to create and switch to a new branch (e.g., for starting work on a feature or patch).

Branch, tag, or commit to checkout

Create a new branch with -b flag

Specific files to checkout (restore)

List, create, or delete branches.

Name of branch to create

Name of branch to delete

Name of branch to force delete (-D)

List both local and remote branches

List only remote branches

Rename the current branch to this name

Switch to a different branch.

Branch to switch to

Create the branch if it doesn't exist (-c)

Detach HEAD at the branch

Merge one or more branches into the current branch.

Branch to merge into the current branch

Create a merge commit even for fast-forward merges

Squash all commits into a single commit

Merge commit message

Abort the current merge

Reapply commits on top of another base commit.

Branch or commit to rebase onto

Abort the current rebase

Continue the rebase after resolving conflicts

Apply changes from specific commits onto the current branch.

Commit hashes to cherry-pick

Apply changes without committing

Abort the current cherry-pick

Continue after resolving conflicts

Stage file changes for the next commit. Use this before git_commit. This is NOT git_stash — staging prepares files to be committed, not saved temporarily.

Files or directories to stage

Stage all changes including untracked files

Stage only modified and deleted files (not new files)

Record staged changes to the repository.

Commit message

Automatically stage modified and deleted files before committing

Amend the previous commit

Allow creating a commit with no changes

Reset the current HEAD to a specified state.

Commit to reset to (default: HEAD)

Reset mode: soft (keep staged), mixed (unstage, default), hard (discard all changes)

Specific files to unstage

Temporarily save uncommitted changes to a stash stack, restoring a clean working directory. Only use when the user explicitly wants to stash/shelve changes for later — NOT for staging or committing.

Description of the stash

Also stash untracked files

Apply the most recent stash and remove it from the stash list.

Index of the stash to pop (default: 0, most recent)

Push local commits to a remote repository. Use with force=true to update an EXISTING Radicle patch with new commits (creates a new revision). To create a NEW patch, use git_push_patch instead.

Remote name (e.g. 'origin', 'rad')

Branch to push

Set upstream tracking reference (-u)

Force push (overwrites remote branch)

Push all tags

Create a NEW Radicle patch by running `git push rad HEAD:refs/patches`. This is the ONLY way to create a patch in Radicle — there is no `rad patch create` command. Use this whenever the user wants to submit changes, open a patch, create a PR, or push for review.

Set upstream tracking (-u) so future pushes update the patch

Fetch and integrate changes from a remote repository.

Remote name

Branch to pull

Rebase instead of merge

Download objects and refs from a remote repository without merging.

Remote name (default: origin)

Fetch from all remotes

Remove remote-tracking references that no longer exist

Add a new remote repository.

Name for the remote

URL of the remote repository

Remove a remote repository.

Name of the remote to remove

Show the working tree status — staged, unstaged, and untracked files. Use when the user asks about the current state, what's changed, what's modified, or 'status'.

Show short-format output

Show the commit history.

Maximum number of commits to show

Show each commit on a single line

Show commits from all branches

Show ASCII graph of branch history

Filter by author

Show commits after date (e.g. '2024-01-01', '2 weeks ago')

Show commits affecting this file

Show changes between commits, working tree, and staging area.

Show diff of staged changes (--cached)

Compare against a specific commit or branch

Second ref for comparing two commits (ref..ref2)

Specific files to diff

Show diffstat instead of full diff

Show details of a specific commit including its diff.

Commit, tag, or other object to show (default: HEAD)

Show diffstat instead of full diff

Show who last modified each line of a file.

File to blame

Line range to blame (e.g. '10,20')

Create, list, or delete tags.

Tag name to create

Tag message (creates annotated tag)

Tag name to delete

List all tags

Commit to tag (default: HEAD)

Remove files from the working tree and staging area.

Files to remove

Only remove from staging area, keep file on disk

Remove directories recursively

Move or rename a file, directory, or symlink.

Source path

Destination path

Remove untracked files from the working tree.

Required to actually remove files

Also remove untracked directories (-d)

Show what would be removed without removing (-n)

Also remove ignored files (-x)


[System]
You are a Radicle and Git expert assistant. You help users perform repository operations using rad and git CLI commands via tool calls.

Key rules:
- To create a Radicle patch, use git_push_patch (runs `git push rad HEAD:refs/patches`). Do NOT use `rad patch create` — that command does not exist.
- To update an existing patch with new commits, use git_push with force=true on the patch branch.
- Always use non-interactive flags (--message, --title, --stdin) instead of commands that open an editor.
- When a command needs a patch_id, issue_id, or similar, ask the user or use a list command first to find it.
- For multi-step operations, execute tools one at a time and use the results to inform the next step.

[User] Create a branch called fix/session

[Tool] Switched to a new branch 'fix/session'

[Assistant] Created and switched to `fix/session`.

[User] I edited internal/sync/handler.go. Stage just that file.

[Assistant] Staged `internal/sync/handler.go`.

[User] Commit with message "Simplify flaky test"

[Tool]
[fix/session e9d6552] Simplify flaky test
 1 file changed, 5 insertions(+)

[Assistant] Committed: "Simplify flaky test".

List patches in a Radicle repository. By default shows open patches.

Filter by patch state (default: open)

Show all patches including draft, merged, and archived

Filter by author DID

Show only patches authored by the current user

Show details of a specific patch including title, author, state, and revision history.

ID of the patch to show

Also show the diff of changes in the patch

Show the git diff of a specific patch. Shows the diff between the revision's base and head.

ID of the patch

Specific revision to diff (default: latest revision of original author)

Checkout a Git branch pointing to the head of a patch revision.

ID of the patch to checkout

Checkout a specific revision of the patch

Name for the branch to checkout

Force checkout even if the branch already exists

Comment on a patch revision, reply to a comment, edit a comment, or react to a comment.

ID of the revision to comment on

The comment message

Comment ID to reply to

Comment ID to edit

Create a review of a patch revision. Can accept or reject the patch.

ID of the patch to review

Accept the patch revision

Reject the patch revision

Specific revision to review (default: initial revision)

Review message

Do not provide a message

Update the metadata of an EXISTING patch (base commit or description only). This does NOT create a new patch — use git_push_patch to create patches. This does NOT push new code — use git_push with force=true to add a new revision.

ID of the patch to update

Git revision to use as the new base commit

Update message

Do not provide a message

Add or remove assignees to/from a patch.

ID of the patch

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels to/from a patch.

ID of the patch

Labels to add

Labels to remove

Mark a draft patch as open, or convert an open patch back to draft with --undo.

ID of the patch

Convert patch back to a draft

Archive a patch, or unarchive with --undo.

ID of the patch

Unarchive the patch (mark as open)

Delete a patch. Removes patch data associated with the current user.

ID of the patch to delete

Mark a review comment as resolved or unresolved.

ID of the patch

ID of the comment to resolve or unresolve

Open a new issue in the Radicle repository.

Title of the issue

Description of the issue

List issues in the Radicle repository, optionally filtering by state or author.

Filter by issue state

Filter by author DID

Show only assigned issues

Show details of a specific issue including title, state, comments, and labels.

ID of the issue to show

Add a comment to an issue.

ID of the issue

The comment message

Change the state of an issue (close or reopen).

ID of the issue

New state for the issue

Add or remove assignees from an issue.

ID of the issue

DIDs to add as assignees

DIDs to remove as assignees

Add or remove labels from an issue.

ID of the issue

Labels to add

Labels to remove

Edit the title and/or description of an existing issue.

ID of the issue to edit

New title for the issue

New description for the issue

Delete an issue.

ID of the issue to delete

Initialize a Git repository for Radicle. Sets up the rad remote and publishes to the network.

Name of the repository

Description of the repository

Default branch name

Set repository visibility to public

Set repository visibility to private

Skip confirmation prompt

Setup upstream of the default branch

Setup radicle key as signing key

Clone a Radicle repository from the network. Also starts seeding the repository by default.

Repository ID to clone (e.g. rad:z31hE1wco9132nedN3mm5qJjyotna)

Target directory for the clone

Follow scope for the repository

NID of a seed to clone from

Create a working copy from a repository already in local Radicle storage.

Repository ID to checkout

DID of a remote peer to checkout

Skip confirmation prompt

Synchronize a repository with the Radicle network. Fetches changes from seeds and announces local refs.

Repository ID to sync (default: current repository)

Only fetch, do not announce

Only announce, do not fetch

Sync with a specific seed node NID

Number of seeds to sync with (default: 3)

Timeout duration (e.g. '10s', '5min')

Announce inventory to the network (standalone mode)

Display the sync status of a repository, showing which seeds have fetched and announced.

Repository ID (default: current repository)

START seeding a repository (begin replicating it on the network). Without arguments, lists currently seeded repos. To STOP seeding, use rad_unseed instead.

Repository ID to seed

Peer follow scope for this repository

Do not fetch repository after updating seeding policy

STOP seeding a repository — remove it from your node's replication. Use when the user says 'stop seeding', 'unseed', or 'don't seed anymore'.

Repository ID to stop seeding

List Radicle repositories.

List only seeded repositories

List all known repositories

Convert a private Radicle repository to public.

Start the Radicle node daemon. Required for network operations.

Stop the Radicle node daemon.

Show the status of the Radicle node including connections and network info.

Instruct the node to connect to another Radicle node.

Node address in format NID@host:port

Show YOUR current Radicle identity — your DID, Node ID, alias, and home directory. Use this when the user asks 'who am I', 'my identity', 'my DID', 'my NID'. This is NOT rad_id_show (which shows a repository identity proposal).

Show only the DID

Show only the Node ID

Show only the Radicle home directory

Create or authenticate a Radicle cryptographic identity.

Display alias for the identity

Read passphrase from stdin (for non-interactive use)

Propose a new revision to the repository identity document. Used to grant/revoke access, rename, etc.

Title describing the identity change

DIDs to grant access to (for private repos)

DIDs to revoke access from

New repository name

New repository description

Skip confirmation prompt

List all proposed revisions to the repository identity document.

Show a specific REPOSITORY identity proposal (not your personal identity). Requires a proposal_id. To see your own identity, use rad_self instead.

ID of the identity proposal to show

Accept a proposed revision to the identity document.

ID of the identity proposal to accept

Reject a proposed revision to the identity document.

ID of the identity proposal to reject

Add a Git remote for a Radicle peer.

Node ID of the peer

Alias for the remote

Remove a Git remote.

Name of the remote to remove

List stored remotes for the current repository, showing both tracked and untracked peers.

Follow a Radicle peer. Without arguments, lists all followed nodes.

Node ID or DID of the peer to follow

Alias for the followed peer

Unfollow a Radicle peer.

Node ID or DID of the peer to unfollow

Block a repository or node from being seeded or followed.

Repository ID (RID) or Node ID (NID) to block

Unblock a repository or node.

Repository ID (RID) or Node ID (NID) to unblock

List notifications in your Radicle inbox. In a repository directory, shows only that repo's notifications.

Show notifications from all repositories

Show a specific notification and mark it as read.

ID of the notification to show

Clear notifications. Cleared notifications are deleted and cannot be restored.

Notification IDs to clear (all if empty)

List all collaborative objects (COBs) of a given type in the repository.

COB type identifier (e.g. 'xyz.radicle.patch', 'xyz.radicle.issue', or custom types)

Print the state of a collaborative object.

COB object ID

COB type identifier

Create a new collaborative object of a given type with initial actions.

COB type identifier

JSON array of initial actions

Add actions to an existing collaborative object.

COB object ID

COB type identifier

JSON array of actions to add

Inspect a Radicle repository, showing delegates, identity, refs, or other metadata.

Repository ID or path (default: current repository)

Show the repository's delegates

Show the identity document

Show identity document history

Show local refs

Show signed refs for all remotes

Show identity payload

Show repository visibility

Return only the repository identifier

Show seeding policy

Show the current Radicle configuration as JSON.

Get a specific value from the Radicle configuration.

Configuration key to get

Set a key to a value in the Radicle configuration.

Configuration key

Value to set

Show the current repository's Radicle Repository ID (RID).

Initialize a new Git repository in the current directory or specified path.

Directory to initialize (default: current directory)

Name for the initial branch (e.g. 'main')

Create a bare repository

Clone a Git repository from a URL.

Repository URL to clone

Target directory

Branch to checkout after cloning

Create a shallow clone with N commits of history

Switch branches or restore working tree files. Use with new_branch=true to create and switch to a new branch (e.g., for starting work on a feature or patch).

Branch, tag, or commit to checkout

Create a new branch with -b flag

Specific files to checkout (restore)

List, create, or delete branches.

Name of branch to create

Name of branch to delete

Name of branch to force delete (-D)

List both local and remote branches

List only remote branches

Rename the current branch to this name

Switch to a different branch.

Branch to switch to

Create the branch if it doesn't exist (-c)

Detach HEAD at the branch

Merge one or more branches into the current branch.

Branch to merge into the current branch

Create a merge commit even for fast-forward merges

Squash all commits into a single commit

Merge commit message

Abort the current merge

Reapply commits on top of another base commit.

Branch or commit to rebase onto

Abort the current rebase

Continue the rebase after resolving conflicts

Apply changes from specific commits onto the current branch.

Commit hashes to cherry-pick

Apply changes without committing

Abort the current cherry-pick

Continue after resolving conflicts

Stage file changes for the next commit. Use this before git_commit. This is NOT git_stash — staging prepares files to be committed, not saved temporarily.

Files or directories to stage

Stage all changes including untracked files

Stage only modified and deleted files (not new files)

Record staged changes to the repository.

Commit message

Automatically stage modified and deleted files before committing

Amend the previous commit

Allow creating a commit with no changes

Reset the current HEAD to a specified state.

Commit to reset to (default: HEAD)

Reset mode: soft (keep staged), mixed (unstage, default), hard (discard all changes)

Specific files to unstage

Temporarily save uncommitted changes to a stash stack, restoring a clean working directory. Only use when the user explicitly wants to stash/shelve changes for later — NOT for staging or committing.

Description of the stash

Also stash untracked files

Apply the most recent stash and remove it from the stash list.

Index of the stash to pop (default: 0, most recent)

Push local commits to a remote repository. Use with force=true to update an EXISTING Radicle patch with new commits (creates a new revision). To create a NEW patch, use git_push_patch instead.

Remote name (e.g. 'origin', 'rad')

Branch to push

Set upstream tracking reference (-u)

Force push (overwrites remote branch)

Push all tags

Create a NEW Radicle patch by running `git push rad HEAD:refs/patches`. This is the ONLY way to create a patch in Radicle — there is no `rad patch create` command. Use this whenever the user wants to submit changes, open a patch, create a PR, or push for review.

Set upstream tracking (-u) so future pushes update the patch

Fetch and integrate changes from a remote repository.

Remote name

Branch to pull

Rebase instead of merge

Download objects and refs from a remote repository without merging.

Remote name (default: origin)

Fetch from all remotes

Remove remote-tracking references that no longer exist

Add a new remote repository.

Name for the remote

URL of the remote repository

Remove a remote repository.

Name of the remote to remove

Show the working tree status — staged, unstaged, and untracked files. Use when the user asks about the current state, what's changed, what's modified, or 'status'.

Show short-format output

Show the commit history.

Maximum number of commits to show

Show each commit on a single line

Show commits from all branches

Show ASCII graph of branch history

Filter by author

Show commits after date (e.g. '2024-01-01', '2 weeks ago')

Show commits affecting this file

Show changes between commits, working tree, and staging area.

Show diff of staged changes (--cached)

Compare against a specific commit or branch

Second ref for comparing two commits (ref..ref2)

Specific files to diff

Show diffstat instead of full diff

Show details of a specific commit including its diff.

Commit, tag, or other object to show (default: HEAD)

Show diffstat instead of full diff

Show who last modified each line of a file.

File to blame

Line range to blame (e.g. '10,20')

Create, list, or delete tags.

Tag name to create

Tag message (creates annotated tag)

Tag name to delete

List all tags

Commit to tag (default: HEAD)

Remove files from the working tree and staging area.

Files to remove

Only remove from staging area, keep file on disk

Remove directories recursively

Move or rename a file, directory, or symlink.

Source path

Destination path

Remove untracked files from the working tree.

Required to actually remove files

Also remove untracked directories (-d)

Show what would be removed without removing (-n)

Also remove ignored files (-x)