Approve a tool run

Note: Run the Python sample in an interactive terminal. Pipes and CI deny dangerous tools by default with no prompt.

Safe by default

File writes and shell commands are risky. On an interactive terminal PraisonAI asks before they run.

In CI or a pipe, the same tools are denied unless you set an explicit policy.

Example

from praisonaiagents import Agent

agent = Agent(
    name="Dev Agent",
    instructions="Help with file ops",
    tools=["write_file", "execute_command"],
)
agent.start("create a hello.txt file")

Example explained

  • tools — High-risk tools trigger an approval prompt on a TTY.
  • agent.start — When the model picks a tool, you choose once, session, always, or no.

Deny in automation

For pipelines, turn off prompts and keep deny-by-default so a misconfigured runner cannot delete files silently.

Example

from praisonaiagents import Agent

agent = Agent(
    name="CI Agent",
    approval=False,
    tools=["write_file", "execute_command"],
)
agent.start("run tests and update report")

Example explained

  • approval=False — No prompt; dangerous tools stay denied off-TTY style.

Declarative rules

For YAML runs you can allow and deny patterns up front instead of clicking each time.

Example

praisonai run agents.yaml \
  --allow 'read:*' \
  --allow 'bash:git *' \
  --deny 'bash:rm *' \
  --permission-default ask

Reference: documentation