-
Notifications
You must be signed in to change notification settings - Fork 0
[claude-hackernews] Reply draft: Harness Show HN, hook layer cuts permission-prompt UX cost at parallel-N (id=47948379) #47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
NiveditJain
wants to merge
1
commit into
main
Choose a base branch
from
luv-56
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| **Status:** draft (pending manual post) | ||
|
|
||
| **HN:** https://news.ycombinator.com/item?id=47948379 (Show HN: Harness — Manage parallel Claude Code agents across Git worktrees, by frenchie4111, 4 days old, 3 points, 1 visible comment) | ||
|
|
||
| **Story / OP:** Show HN: Harness — Manage parallel Claude Code agents across Git worktrees (https://github.com/frenchie4111/harness). OP: "I built Harness because I was dissatisfied with all the other options out there (cmux, Conductor) and wanted more flexibility. Only been working on it for a couple of weeks so I would love feedback!" | ||
|
|
||
| **Sub-thread tone signal:** Only one comment exists on the thread, and it is currently `[flagged]` and hidden in the default view. OP responded to that flagged comment explaining the design rationale: each worktree is a tab, the icon shows agent status, and importantly "red means waiting on a permission prompt". So the harness layer surfaces an explicit human-in-the-loop approval gate as part of its UX. Reply form is open. | ||
|
|
||
| **My reply** (top-level, replying to the Show HN itself, posted as unauthenticated user — user picks account at post time): | ||
|
|
||
| ``` | ||
| (disclosure: I work on FailProof AI: https://github.com/exospherehost/failproofai) | ||
|
|
||
| The red-status-equals-permission-prompt design makes visible what the harness layer is paying for in human attention: with N parallel worktrees, every prompt is a context switch, and the cost scales with N. A lot of those prompts are recoverable a layer below: anything you would always click "deny" on can be a PreToolUse hook that returns deny() with a reason, so the agent gets the rejection inline without ever turning a tab red. Composes with what you have - the hook short-circuits the obvious-no calls, the prompt surface handles the genuinely ambiguous ones. Curious whether you considered per-worktree hook config, so an experimental worktree could ship with a stricter policy set than a "trusted" one. | ||
| ``` | ||
|
|
||
| **Insight for the FailProof team:** | ||
|
|
||
| The "N parallel agents" framing is a real slice of the audience that has not been front-and-center in our positioning so far. Solo agent + hooks is the dominant story; parallel-N agent + hooks is the thing that turns hooks from "nice safety net" into "the only way to keep your eyes open." Concrete actions: (1) a blog or README section called something like "Hooks at parallel-agent scale" that walks through the math — if 5% of your tool calls would surface as approval prompts and you run 10 agents in parallel, you are now interrupting yourself ~12x more often than the solo case; the auto-deny share of PreToolUse hooks linearly reduces that. (2) Show that per-project `.failproofai/policies/` config naturally gives you per-worktree policy variation since each worktree typically tracks a different branch / scope, without anyone needing to hand-roll worktree-aware tooling. That answers the "per-worktree hook config" question I leave dangling in the reply, but in a way the reader has to click through to the README to discover, not get spoon-fed in the comment. (3) The competing-product reference set in this slice is real and small: cmux, Conductor, this Harness. Worth knowing where each of them sits on permission-prompt UX, so the next time one of them surfaces on HN we have a sharper mental model. (4) frenchie4111's [flagged] sole commenter is a signal that the thread has a contrarian visible to mods; a substantive on-topic technical reply that engages with the design rather than the flagged drama is the right shape here. | ||
|
|
||
| **Notes / findings:** | ||
|
|
||
| - Thread is 4 days old. HN's reply window is ~2 weeks, so well within it; reply form is rendered. | ||
| - Only one comment on the thread, marked `[flagged]` (hidden in default view). The OP himself replied to it with a design defense, so a substantive reply that engages with the OP's design is unlikely to crowd anyone out and likely to draw an OP response. No `[dead]` markers anywhere visible. | ||
| - Mid-thread visibility risk is low here — with 3 points and effectively zero visible comments, a top-level reply will sit at the top. | ||
| - Cross-thread guard: I have replied on harness-vs-hook-layer threads before (PR #20 Pu.sh, PR #17 harness-outside-sandbox). The Pu.sh draft was about "harness wants to stay 400 LOC, push hardening into a separate hook layer"; the harness-outside-sandbox draft was about "PreToolUse as a tool-request firewall in the no-credentials-in-sandbox split". This draft's angle is different: it is about the **UX cost of permission prompts at parallel-N scale**, and how an auto-deny hook layer reduces the linear-in-N attention tax. The framing is specific to Harness's red-status indicator design choice; it would not work as a paste on either of the prior threads. | ||
| - ASCII-punctuation audit on the reply body: no em-dash, en-dash, curly quote, unicode arrow, or fancy ellipsis. Hyphens, ASCII straight quotes, three-dot ellipsis only. | ||
| - Anti-pitch audit: one disclosure line at top; one paragraph (~125 words) of substantive on-topic content; one policy concept named (PreToolUse hook + deny()), no comma-listed policy names; no install commands; no version numbers; no `~/.failproofai/` path callouts; no Agent Monitor / dashboard plug; no `http://localhost:8020` mention; no two-link pattern (repo URL appears once, in the disclosure line); ends with a question to OP (per-worktree hook config) that genuinely asks rather than pitching. | ||
| - Reply targets the Show HN itself (top-level), not the [flagged] sub-thread. | ||
| - Per-worktree hook config really is a clean idea independent of FailProof. If frenchie4111 builds it natively, that is good for the harness layer; if they shell out to FailProof's existing project-scope config, that is good for FailProof; either outcome is fine. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a language tag to the fenced reply block to satisfy markdownlint.
Line 11 opens a fenced code block without a language, which triggers MD040. Add a language label (for example
text) to keep lint clean.Suggested diff
Verify each finding against the current code and only fix it if needed.
In
@drafts/2026-05-04T043235Z.mdaround lines 11 - 15, The fenced code blockstarting with
on the reply block should include a language tag to satisfy markdownlint MD040; change the opening fence fromtotext (or another appropriate language) so the block is fenced astext and lint passes, e.g.,update the block that begins with the disclosure "(disclosure: I work on
FailProof AI...)" to use ```text as its opener.