The commands you'll use in 2.3.0, with their main flags. Start typing to filter — hit / from anywhere. foreman <command> --help has the rest.
| --reset-policy | Overwrite policy.yaml with the default template. |
| --reset-soul | Overwrite SOUL.md with the default identity template. |
$ foreman init
| --resume | Pick up from the last completed step. |
| --reset | Clear setup state and start over. |
$ foreman setup --resume
| --no-onboarding | Skip the setup prompt even on a fresh home. |
| --skip-setup | Launch with the default policy only and remember the choice. |
$ foreman start
No flags.
$ foreman daemon
No flags.
$ foreman service install
No flags.
$ foreman service status
No flags.
$ foreman service uninstall
| --speed <n> | Play the scripted day faster (default: 1). |
| --keep | Keep the demo directory afterwards. |
$ foreman demo --speed 2
| --json | Structured JSON report. |
$ foreman doctor --json
No flags.
$ foreman completion zsh > ~/.zsh/completions/_foreman
No flags.
$ foreman migrate-config
| --type <registryId> | Registry entry id (defaults to the name when it is one), e.g. codex or claude-code for an instance. |
| --auto-install | Install the agent when its binary is missing. |
| --config-path <path> | Write the wiring to a non-default config. |
| --skip-config | Don't touch the agent's config. |
| --token-out <path> | Also write the identity token to a 0600 file. |
| --key-out <path> | Write the agent's private key to a 0600 file (it is never printed). |
$ foreman agent add backend --type codex
| --project [dir] | Only this project: <dir>/.claude/settings.json (default: the current folder). |
| --dry-run | Show what would change without writing. |
$ foreman agent hook install claude-code
No flags.
$ foreman agent list
No flags.
$ foreman agent show codex
| --all | Rewire every registered agent. |
| --token-out <path> | Also write the token to a 0600 file. |
$ foreman agent rewire --all
No flags.
$ foreman agent token rotate codex
| --yes | Skip the confirmation. |
$ foreman agent remove hermes --yes
No flags.
$ foreman agent block openclaw
No flags.
$ foreman agent disable hermes
| -s, --source <id> | Agent id; trusted only with that agent's token in FOREMAN_AGENT_TOKEN. |
$ foreman mcp-stdio --source my-bot
No flags.
$ foreman mcp catalog
| --command <command> | Custom stdio server command. |
| --url <url> | Custom streamable-HTTP server (https://). |
| --env <KEY=VALUE> | Environment; use ${secret:name} for secrets. |
| --oauth | Remote server uses MCP OAuth (then foreman mcp login). |
| --param <KEY=VALUE> | Catalog parameter, e.g. host=gitlab.example.com. |
$ foreman mcp add github
| --refresh | Ignore the pinned cache and ask the live servers. |
| --json | Emit JSON. |
$ foreman mcp tools github
| --include-flagged | Also accept tools the scanner flagged. |
$ foreman mcp trust github
No flags.
$ foreman mcp login linear
No flags.
$ foreman mcp mode lazy
No flags.
$ foreman mcp list
No flags.
$ foreman integrations catalog
| --agents <ids> | Agents that may use it (comma-separated). |
| --departments <ids> | org.yaml departments whose members may use it. |
| --read-write | Allow write tools (read-only is the default). |
| --token-stdin | Read the credential from stdin. |
| --name <name> | Server name, e.g. github-work for a second account. |
$ foreman integrations add github --agents claude-code,codex
No flags.
$ foreman integrations list
No flags.
$ foreman integrations show github
| --tool TOOL=RULE | Per-tool rule; can only make a tool stricter. |
$ foreman integrations update github --tool create_issue=allow
No flags.
$ foreman integrations review github
No flags.
$ foreman integrations enable github
| --json | Every condition, plus bucket overrides. |
$ foreman policy show
No flags.
$ foreman policy edit
No flags.
$ foreman policy reset
No flags.
$ foreman policy remembered list
| -n, --limit <N> | Rows to show (default: 20). |
| -f, --follow | Poll for new rows every 2 s. |
| --session <id> | One agent-to-agent chain. |
| --json | Emit JSON. |
$ foreman log tail --follow
| -n, --limit <N> | Max rows (default: 50). |
| --json | Emit JSON. |
$ foreman log search ".env"
| --json | Emit JSON. |
$ foreman log show 4827
| --unread | Only unread items. |
| --json | Emit JSON. |
$ foreman inbox --unread
No flags.
$ foreman secrets add github-pat
| --json | Emit JSON. |
$ foreman secrets list
| --reveal | Show the plaintext. |
$ foreman secrets show github-pat --reveal
No flags.
$ foreman secrets rotate github-pat
No flags.
$ foreman secrets remove old-key
| --chat-id <id> | Telegram: your chat with the bot. |
| --channel <name> | Slack: the channel; Discord: the channel id. |
$ foreman notify enable telegram --chat-id 123456789
| --off | Go back to relaying approvals through the chat bot. |
$ foreman notify approval-bot
| --user <id> | Slack user id allowed to decide and command (repeatable). |
| --off | Back to push-only Slack (also removes the allowed and owner user ids). |
$ foreman notify slack-interactive --user U012ABCDEF
| --user <id> | Discord user id allowed to decide and command (repeatable). |
| --off | Back to push-only Discord (also removes the allowed and owner user ids). |
$ foreman notify discord-interactive --user 123456789012345678
| --server <url> | ntfy server (default: https://ntfy.sh). |
$ foreman notify ntfy-setup
No flags.
$ foreman notify test telegram
No flags.
$ foreman notify route critical telegram ntfy
No flags.
$ foreman notify silence 2h
No flags.
$ foreman org templates
| --template <id> | startup | software-team | solo (default: startup). |
| --company <name> | Company name. |
| --force | Replace an existing org.yaml. |
$ foreman org init --template software-team --company "Acme"
| --json | Output JSON. |
$ foreman org show
No flags.
$ foreman org validate
| --head <role> | Role id of the head (created if missing). |
| --agent <agent> | Agent that fills a new head role. |
| --name <name> | Display name. |
| --title <title> | The head's title. |
| --reports-to <role> | Who the head reports to (default: you). |
$ foreman org add-department marketing --head cmo --agent claude-code --name Marketing
No flags.
$ foreman org roles
| --preset <id> | Start from a ready-made role (see foreman org roles). |
| --describe <text> | What the role does, in your own words; the agent is told this. |
| --agent <agent> | An agent you registered fills the role. |
| --runs-on <type> | A new instance of claude-code or codex, named after the role, fills it. |
| --can <list> | What its agent may do: read, write, shell, network (comma-separated). |
| --department <id> | Department it belongs to. |
| --reports-to <role> | Manager role (default: the department head, else you). |
| --title <title> | Job title. |
| --responsibility <text> | What the role is for, in one line. |
| --model <model> | A cheaper model for routine work. |
$ foreman org add-role code-reviewer --preset code-reviewer --department engineering
No flags.
$ foreman org check engineer cmo
No flags.
$ foreman org assign marketing "draft the launch post"
| --follow | Keep printing new messages. |
| --limit <n> | How many (default: 30). |
$ foreman org messages engineering --follow
No flags.
$ foreman org tell all "welcome to launch week"
No flags.
$ foreman org channel marketing slack "#marketing"
No flags.
$ foreman org escalate on
| --json | Output JSON. |
$ foreman org report marketing month
| --daily | A daily limit instead of monthly. |
| --pause | When spent, agents can't hand the department new work (you still can). |
| --warn | When spent, only alert (default). |
$ foreman org budget marketing 50 --pause
No flags.
$ foreman org sync
| --by <group> | department | agent | model. |
| --json | Output JSON. |
$ foreman usage week --by agent
No flags.
$ foreman usage env claude-code
No flags.
$ foreman write codex "add tests for src/rate-limit.ts"
| --name <agentId> | Agent id recorded on every call. |
| --restart <mode> | never | on-failure. |
$ foreman wrap --name my-agent -- my-agent-binary start
No flags.
$ foreman llm status
No flags.
$ foreman registry list
No flags.
$ foreman identity show