Use the agent you already know
This capstone adds no capability and no new command. It assembles the proofs from Modules 1.2 through 1.4.
C:\Windows\win.ini./etc/hosts, and keep the real refusal wording from your own machine.Put the friendly name beside the UUID
armaraos agent list
Choose one running agent. Copy its UUID and label it with the friendly name before any later command.
Rehearse the service handoff once
armaraos stop
armaraos start --detach
Prove health from the new window
armaraos health
The service survived the old window. Leave it running detached for the rest of the assembly.
Prove the boundary the CLI really shows
armaraos message <UUID> "Read C:\Windows\win.ini and tell me the first line."
armaraos message <UUID> "Read /etc/hosts and tell me the first line."
The refusal occurs before an approval record is created. Do not move the system file merely to defeat the boundary.
Interpret the empty queue exactly
armaraos approvals list --json
Total zero means no approval record is pending now. It does not prove that every tool call asked first. The original reject-and-approve capstone does not reproduce through the 0.8.3 CLI, so this lesson does not stage it.
Finish with one reply and its record
armaraos message <UUID> "Reply with the single word: working"
armaraos sessions
Match the session's agent ID to the roster. The message count records activity, although the command does not print transcript text.
Course 1 completion check
Start from a completely fresh terminal.
Run armaraos health, then send the one-shot working prompt by UUID. You are done when both succeed and you can explain why the outside-file request was refused.
Leave the daemon detached on localhost. Do not expose port 50051, do not move a system file into the workspace, and do not treat an empty queue as universal approval.
Troubleshooting the assembly
| What you see | Likely cause | What to do |
|---|---|---|
| Health fails in the new window | Startup was not detached or has not finished. | Start detached, wait, and retry. |
| Message rejects the name | The live API requires a UUID. | Copy the ID from the roster. |
| The outside-file request is refused | The intended boundary worked. | Keep the file outside the workspace. |
| Approvals total is zero | No approval record is pending. | State exactly that and continue. |
| Sessions shows all agents | The filter is ignored in 0.8.3. | Match the agent ID manually. |