Skip to main content
Manage custom agents discovered from .praisonai/agents/ (and .claude/agents/ / .agents/agents/ when present) — author them with create, then list and inspect with list / show. Distinct from praisonai agents (the multi-agent UI command).

Commands

create

Turn a one-line description into a permission-scoped .praisonai/agents/<name>.md — no editor round-trip.
1

Interactive

Run create with no flags and answer the four prompts (name, description, permission, model).
2

Non-interactive / CI

Pass every value as a flag and add --yes to skip prompts — scriptable for CI.
The resulting .praisonai/agents/code-reviewer.md:
role is derived from the name (code-reviewerCode Reviewer): _ and - become spaces, then title-cased. goal is your --describe text.
3

Global (user-wide)

Add --global to write to ~/.praisonai/agents/<name>.md instead of the project directory.
If a same-named project agent already exists, a shadow warning fires — the project-local definition wins for run.

Flags

Permission presets

Presets reuse the same mode: grammar the runtime already understands — no parallel vocabulary. full deliberately omits mode: to keep files minimal. See Custom Agents & Commands → Scoping permissions for the full grammar.

Behaviour worth knowing

The system prompt is drafted via the same Agent.run path as init --generate. On any failure, drafting degrades to an editable stub (“Describe how you should behave here”), prints a warning, and still writes the file with exit code 0. Edit the stub in place.
validate_agent_name rejects empty names, ., .., and any name containing / or \ — so every write stays inside the chosen agents directory. Invalid names exit 1 before any LLM call, so failure is cheap.
--permission full writes no mode: key. Absence of mode: means the full toolset — the runtime’s default — so files stay minimal.
After writing, the CLI re-parses the exact file it wrote, then checks the precedence-resolved definition. If a higher-precedence (project-local) agent of the same name would win for run, it prints: “Another '' agent takes precedence for ‘run’: .” Rename this agent or remove the other to use it directly.
Without --force, create refuses to touch an existing file and exits 1. With --force, it overwrites in place.
Names must be path-safe. ../foo, a/b, a\b, /abs, ., and .. are all rejected before any model call.
Prefer praisonai agent create for a single, focused agent; use praisonai init when you also want starter commands and tools next to it. See Custom Agents & Commands for the full definition format.
After a successful create, run the exact line the CLI prints:
See praisonai run for the full runtime surface.

list

Show discovered agents with their source and model.

show

Inspect a single agent’s details, system prompt, and tools.
No agents yet? Run praisonai agent create for the shortest path to a single custom agent, or praisonai init to scaffold a full starter project in .praisonai/.

Custom Agents & Commands

Define agents from Markdown

Run

Run with —agent

Init

Scaffold a starter project in one command

Agent Presets & Modes

The mode: shorthand behind permission presets