Uses: CLI · Claude Code · Codex
engini CLI, on your own login and your own API-key connection. It does nothing your key could not do by hand - which is also the honest limit of every safety measure on the Engini skills safety page.
The current release is v0.5.0.
Before you start
jq is not needed.
Install in Claude Code
Run these two commands in Claude Code:vX.Y.Z with the release tag, for example v0.5.0. Claude Code does not update plugins on its own, and neither tool signs or verifies a plugin, so the pinned form is the one to use if you review what you install.
Start a new session after installing - the skill is not found until you do.
Install in Codex
/plugins browser and start a new session - the skill is not found until you do.
Codex has no guard hook, so also save the Codex rules from Engini skills safety as ~/.codex/rules/flo.rules. Codex runs commands without network by default, which makes every engini call fail: see Codex sandbox.
Add the safety settings
A plugin cannot install your own permission settings for you. Copy them in yourself:- Claude Code: merge the permissions block from Engini skills safety into your user settings, and never run the agent with
--dangerously-skip-permissions. - Codex: save the rules file as described above.
Check the install
This check must fail loudly if something is wrong. Claude Code. Run/plugin details workflow@engini. It must list Skills (1), Agents (1) and Hooks (1). Hooks (0) means the guard is not installed and nothing but your own settings asks you before the four things the agent does only on your explicit request (see Engini skills safety).
Then prove the guard actually runs. Ask Claude to run this exact command. It is harmless either way: it makes a throwaway fake engini in a temp folder and puts it first on the path, so your real CLI and account are never touched.
- Claude Code asks you to confirm the command, and the prompt text starts with
FLO-HOOK-ASK- the guard is working. Answer No; answering Yes is harmless too (the fake CLI just printsFLO-CANARY-RAN). - It prints
FLO-CANARY-RANwith no prompt - the guard did not run (no Python on the path, hooks disabled in your settings, the plugin disabled, or an older Claude Code), or your permission mode answered the prompt for you. Fix that before you rely on it. - A prompt or a permission-denied message that does not contain
FLO-HOOK-ASK- that came from your own settings (the safety block), not from the guard, which did not run. Fix that too.
Connect Engini
Do this in your own terminal, outside Claude Code or Codex.1
Log in
engini login --api-key ...: arguments end up in your shell history and in the process list.2
Connect the workflows app
x-api-key) and paste your workspace-scoped key. Any other auth method fails every builder call with 403 API_KEY_REQUIRED.! prefix for these. The CLI hides the key you type only when its input is a terminal, and in Claude Code’s ! mode it is not (process.stdin.isTTY is false there), so a key typed that way would show. ! is fine for a check with no secret in it, such as ! engini whoami. Whether Codex’s shell gives the CLI a terminal is not verified - use your own terminal there too.
The plugin’s guard refuses to let the agent run these commands, because they put a raw key in the agent’s hands. When the agent needs one done, it stops and gives you the command to run in your own terminal. It never asks you to paste a key into the chat and never puts a key in a command.
What the workflow plugin can build
From a plain-language request, the agent can build and edit these kinds of steps in a workflow:- Triggers and connector actions: the trigger that starts the workflow and the actions of Engini’s connectors.
- If: a Yes branch and a No branch.
- For Each: repeats steps for every item in a list.
- Switch: one branch per case, plus a Default branch for everything else.
- Do While: repeats steps while a condition holds.
- Scope: groups steps together.
- Failure paths: steps that run when a step fails, on any step. A Scope with a failure path works as try/catch for the whole group.
- Variables: create a variable and set it later.
- Delay and Stop.
- AI Agent steps.
- Sort & Filter: keep, filter and sort the records of a list.
- Map Array: turn a list into a new list with the columns you choose.
- Parse JSON / XML: read the fields of JSON or XML text so later steps can use them.
- Query Array: add this step yourself in the designer.
- Moving or deleting an existing failure path: The agent can add a failure path and edit the steps on one, but it will not move or delete one that already exists.
First run
Ask for a workflow in plain words:- Checks the CLI version, your login (account, workspace and environment) and your
engini_workflowsconnection. - Compiles a throwaway plan to confirm which workspace and environment your connection writes to.
- Searches the catalog, reads each step’s schema and dropdown options, and compiles the plan until it is clean.
- Stops and shows you a proposal table: every step, the target workspace and environment the compile echoed, the connection id and a fingerprint.
- Creates the workflow only when you approve that proposal in the conversation, quoting its fingerprint. The workflow is created turned off.
What the agent will and won’t do
The agent will: design, dry-run, propose, and create or update workflows you approved - always turned off. The agent won’t (on its own): turn a workflow on or off, run it, rerun an execution or delete a workflow. It does one of these only when you explicitly ask for that action on that workflow, and you get a permission prompt each time. The agent never: creates or changes a connection, or handles your API key. When a step needs one, it stops and gives you the command to run in your own terminal. How each of these is enforced, and where the enforcement stops, is on Engini skills safety.Moving from flo@engini-flo
Version 0.3.0 renamed the install: the marketplace isengini and the plugin is workflow (the agent is still Flo; its skill is now /workflow:build-engini-workflow). The repo has since moved to engini/skills; the old engini/flo-plugin and engini/workflow-plugin addresses redirect to it, so an existing install keeps working until you move. To move from flo@engini-flo:
Claude Code
engini-flo marketplace in /plugins, then add https://github.com/engini/skills.git --sparse .agents/plugins as shown under Install in Codex and install workflow from the browser. Start a new session afterwards.
Update and uninstall
- Update: run
/plugin marketplace update engini, then reinstall with/plugin install workflow@engini. In Codex, upgrade from/plugins. Neither tool updates the plugin on its own, so a fix to the never list or the guard reaches you only when you update. - Check the guard script: in v0.5.0,
plugin/hooks/deny-never-verbs.pyhas the SHA-256f929432678db710b2b71cb9e50e472c66e2831c8c979e984ea62cccf6c5ab553. Releases that change the guard give the new value. - Uninstall: run
/plugin uninstall workflow@engini(Claude Code), or remove it in/plugins(Codex). Remove the safety settings from your configuration if you no longer want them.
Troubleshooting
The full list, including every error the agent can report from Engini, is in the plugin’s troubleshooting guide.