We kept running into this while building DatGrout Invariant.
The agent makes a change. Tests pass. No errors. But the behaviour doesn't match what you actually asked for. No crash to debug, no obvious failure, just silent goal drift that shows up later.
We called this the "plausible but wrong" problem.
The frustrating part is that existing tools don't catch it, linters check syntax, test suites check output, but nothing checks whether the change matched the original intent.
Hey Product Hunt,
We built DataGrout Flow because production AI agent workflows kept failing in predictable ways that had no clean solution.
Three problems we kept running into:
First, agents build multi-step plans and execute them without any pre-execution check. flow.into with validate_only: true runs a full check before anything executes — cycle detection, Semio type safety across every tool boundary, policy compliance — and produces a Cognitive Trust Certificate. A cryptographic proof the plan is safe. You review the CTC and then decide whether to proceed.
Second, workflows hitting sensitive operations just keep going. flow.request-approval pauses the workflow and waits for a human to explicitly approve before the next step runs. Rejected or timed out means a clean halt. No destructive operations running without someone saying yes.
Third, workflows fail silently when a required field was not provided at the start. flow.request-feedback lets the workflow pause, tell the user exactly what it is missing and why, suggest values, and resume when the user responds.
flow.route handles conditional branching with a predicate engine that supports full field comparisons, truthy path checks, and catch-alls. It also works as an inline conditional step type inside flow.into plans.
Four tools total. All available at DataGrout. Works with Claude, Cursor or any AI agent.
Would love your honest feedback.