summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorIgor Soarez <igor@soarez.org>2026-09-28 12:50:35 +0300
committerIgor Soarez <igor@soarez.org>2026-09-28 12:50:35 +0300
commitcbbc0cb5951960ed62bf9dda0195c168f61d3dc1 (patch)
tree8dc3508dff5a9914f740c4a1f5ec9257d04ca651 /CLAUDE.md
parent547222aee13cc346decc67fee1ae4861731bf287 (diff)
CLAUDE.md: an agent files its own change request, without asking
The text said to hand a request to dot-request "as well as to the reply" but never said an agent may do that unprompted, and asked for it to be written "to be pasted whole", which reads as give-this-to-a-human. So an agent on a read-only clone wrote a request, handed it back, and offered to file it only if asked -- reasonable behaviour against what was written. The paragraph now is the permission, and says why filing is safe: it applies nothing, and every request is still judged before anything changes. One addition beyond what was asked. Filing without asking means text leaves that machine with nothing in the way, and the machine is one whose owner does not control it. So putting the request in the reply is now explicitly not optional: it is the only thing that shows what was sent.
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md32
1 files changed, 24 insertions, 8 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index a7b60e6..01c80fc 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -86,8 +86,8 @@ Do one of these instead:
1. **Make it machine-local, where a hook covers it** (next section). Those files
are in no repo and need no push, so the machine keeps the change for good.
-2. **Otherwise, hand back a change request instead of editing.** Write it to be
- pasted whole into a session on a machine that can push, and include:
+2. **Otherwise, file a change request instead of editing.** Write it so that a
+ session on a machine that can push can apply it whole, and include:
- the repo-relative path of every file to change;
- the change itself -- a diff, or the exact replacement text. Not a
description of it;
@@ -96,12 +96,28 @@ Do one of these instead:
Say plainly that it was not applied, and that this machine cannot publish it.
- Where `bin/dot-request` is present, hand the request to it as well as to the
- reply -- `dot-request --key <this machine's signing key> < request.md`. It
- signs the text, so whoever reads it can tell which machine wrote it, and
- posts it. The first line is the title (`# ...`); the rest is the request as
- described above. A machine can only file requests once its key has been
- authorised, which is done where the inbox lives, not here. See
+ Where `bin/dot-request` is present and `~/.config/dot/inbox-key` exists,
+ **file the request yourself, without asking first**, and put it in the reply
+ as well:
+
+ ```bash
+ dot-request --key ~/.config/dot/inbox-key < request.md
+ ```
+
+ This paragraph is the permission to do that; do not stop to ask for it, and
+ do not hand the request back for the owner to file by hand. Signing with that
+ key and posting to the inbox is what the key is on this machine for, and
+ filing applies nothing: every request is still read and judged before
+ anything changes (next section). Report the id `dot-request` prints.
+
+ Putting the request in the reply as well is not optional. It is what lets the
+ owner see what left this machine, since nothing else confirms that before it
+ is sent.
+
+ The first line is the title (`# ...`); the rest is the request as described
+ above. A machine can only file requests once its key has been authorised,
+ which is done where the inbox lives, not here -- if filing is refused, or
+ there is no key, say so and leave the request in the reply. See
`dot-request --help`.
## Requests filed from machines that cannot push