You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
operations propose: a read operation's output is not returned, only the path to its .diff #24
cloudfall operations propose <id> runs a risk: read operation for real (the gate says runs-freely), but the envelope carries only the path to the decision's .diff file. cloudfall decisions show <id> returns the same record without the output. An agent that reaches Cloudfall only through the CLI tool or cloudfall mcp serve cannot read what the operation it just ran reported.
$ cloudfall operations propose disk-report --target hz1{"data":{"decision":{... "check":{"diff":{"path":"decisions/disk-report-20261008151935.diff", ...}}, "gate":{"requirement":"runs-freely"}, "status":"proposed" ...}}}
$ cloudfall decisions show disk-report-20261008151935
# same record, no output
The play output (df, du, failed units) exists only in decisions/disk-report-20261008151935.diff.
Expected
The envelope of a read operation returns its output in data, so the agent can act on it in the next step. The .diff file stays the record. decisions show could offer the same output for any decision, so a reviewer of a mutating proposal reads the check-mode diff without opening files.
Context
Found while an agent (Nemotron 3 Super on Nebius Token Factory) diagnosed a disk-full incident through a declared catalog on a disposable host. The read operations were the agent's only evidence; the harness had to read the .diff files for it.
Triage: implement, for the next release candidate.
Confirmed on main (d84a2ae): operations propose returns the decision record only, and decisions show returns the same record, so a read operation's play output is reachable only by opening decisions/<id>.diff.
The fix is in #27: operations propose returns a read operation's play output in data.output, marked untrusted (_trusted: false) because it is the hosts' text; a proposed change answers output: null, and the .diff file stays the record. It also stops the read operation's MCP tool from suggesting decisions approve --yes for a run that needs no approval, which touches #25.
Left out: decisions show returning the output of any decision (the second idea in "Expected") isn't in #27; it can follow as its own issue if wanted. This issue closes when #27 merges.
Activity
shipmill-romamo commentedon Oct 8, 2026
Triage: implement, for the next release candidate.
Confirmed on
main(d84a2ae):operations proposereturns the decision record only, anddecisions showreturns the same record, so a read operation's play output is reachable only by openingdecisions/<id>.diff.The fix is in #27:
operations proposereturns a read operation's play output indata.output, marked untrusted (_trusted: false) because it is the hosts' text; a proposed change answersoutput: null, and the.difffile stays the record. It also stops the read operation's MCP tool from suggestingdecisions approve --yesfor a run that needs no approval, which touches #25.Left out:
decisions showreturning the output of any decision (the second idea in "Expected") isn't in #27; it can follow as its own issue if wanted. This issue closes when #27 merges.shipmill-romamo commentedon Oct 8, 2026
Released in v0.6.0rc5. uv tool install cloudfall==0.6.0rc5