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
Agent UX: pm append <id> "" is a silent no-op that still bumps updated_at (false freshness) — #588 empty-input fix didn't cover append #597
pm append <id> "" (empty / whitespace-only positional text) silently succeeds: exit 0, changed_fields: [], body unchanged — but updated_at is bumped to now, creating a false freshness signal. pm comments <id> "" correctly rejects empty text. This is the same empty-input silent-no-op class fixed for pm comment in #588/2026.7.19, but pm append was not covered — and this variant is worse because it mutates updated_at. Verified under CLI 2026.7.18.
Repro
pm update pm-REAL1 --body "test body"
# note updated_at
pm append pm-REAL1 "" # exit 0, changed_fields: [], body still "test body"
# updated_at is now bumped to current time
pm comments pm-REAL1 "" # Error: Command failed <-- validated, as it should be
Observed: before updated_at: ...T14:17:59.455Z → after updated_at: ...T14:18:01.934Z, body unchanged, changed_fields: [].
Observed vs expected
Observed: empty append is a no-op that still bumps updated_at; the updated_at bump directly contradicts changed_fields: [].
Expected: reject empty/whitespace-only append text with a structured usage error (matching pm comments). At minimum, never bump updated_at when changed_fields is empty.
Why it matters for agents
An agent running pm append $id "$text" where $text resolves to empty (a very common templating outcome) sees exit 0 + a full item payload and concludes the append landed. Worse, the bumped updated_at makes the item look freshly modified, which pollutes pm activity, recency sorts, and pm next ranking (which weights updated_at) — so a no-op silently reorders the agent's work queue. Agents must learn per-command empty-input rules instead of relying on a uniform contract.
Duplicate check
Related to #588 (closed; pm comment --message with no text = silent no-op, fixed in 2026.7.19) but distinct: (a) different command (pm append), (b) the #588 fix did not extend to append, (c) this variant bumps updated_at (false freshness) which #588 did not. Confirms the empty-input validation contract in docs/AGENT_UX_CONTRACTS.md ("Input and tracker recovery") should be applied uniformly across text-accepting mutations.
Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.
Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your .coderabbit.yaml:
issue_enrichment:
auto_enrich:
enabled: false
💬 Have feedback or questions? Drop into our discord!
Activity
coderabbitai commentedon Jul 18, 2026
🔗 Related PRs
#45 - feat(agent-ux): deps-graph integrity, close lifecycle clarity, calendar/search/test ergonomics [closed]
#198 - Expand SDK context and mutation primitives [closed]
#255 - CLI surface correctness & agent ergonomics: get body parity, type-error path, comment edit/delete, validate dup-codes (GH-252/253/243/235) [closed]
#291 - feat(update): allow audit evidence appends [merged]
#475 - Improve package install and annotation agent UX [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
unbraind commentedon Jul 19, 2026
pm tracker item: pm-d9g9