Agent_Builder
Agent_Builder on Hacker News
This resonates. One thing we ran into while working with multi-agent workflows was that problems didn’t come from agents being “wrong”, but from being allowed to do a little too much across steps.
What helped was enforcing step-level boundaries: each step explicitly declares what data and tools it can use, and that authority is removed before the next step runs. It made agents less clever, but far more predictable in production.
I’ve seen similar patterns handled well using frameworks like gtwy.ai, especially when multiple agents are coordinating and touching real systems. Curious how you’re preventing permissions or assumptions from leaking between agents over time.
This matches what I’ve seen too. Most failures weren’t sandbox escapes, but small permission leaks across steps.
An agent would do something valid early on, then later reuse that context and act slightly beyond intent. Nothing malicious, just accumulated authority.
What fixed it was step-level gating: each step gets explicit inputs and tools, then everything is torn down before the next step. Once assumptions couldn’t carry forward, whole classes of bugs disappeared.
I ran into this while using GTWY for a constrained agent workflow, and making permissions appear and disappear per step made the system far more predictable.
Curious if others have seen workflow design matter more than the runtime or model.
This is a nice primitive. One thing this highlights is how often the real failures aren’t about tampering after the fact, but about implicit authority accumulating during execution.
In our experience using step-scoped agents, the most useful “receipt” wasn’t a log, but the fact that each step had explicitly declared inputs, tools, and outputs, and that authority was destroyed before the next step ran. If something went wrong, you could point to the exact step boundary where the assumption or permission existed.
Signed receipts feel like a strong complement to that model: step-level determinism plus post-hoc verifiability. Curious whether you see this being used more for human audit trails, or as machine-checkable constraints that downstream agents must validate before acting.
This matches our experience. The biggest friction wasn’t agents being slow, it was agents doing too much between human checkpoints and breaking flow.
What worked for us was treating agents as step-scoped workers rather than continuous copilots. Each step had explicit inputs, allowed tools, and a clear exit condition, then everything reset.
Once agents couldn’t carry assumptions or permissions forward, they became much easier to run alongside normal dev work without surprises. Curious how you’re handling step boundaries and “when to stop” signals.
This resonates a lot. We saw the same “false done” problem with agents — not because they lacked signals, but because they carried assumptions forward across steps.
What helped us wasn’t adding more checks, but making the agent’s authority step-scoped. One step could read CI state, another could reason about review threads, but neither could implicitly conclude “done” unless that outcome was explicitly allowed for that step.
Once we stopped agents from accumulating context and permissions over time, the polling loops and premature victory declarations mostly disappeared.
Your gtg output feels like a really clean primitive to plug into that kind of step-gated workflow. Curious if you’ve experimented with resetting state/authority between PR-check phases, not just aggregating signals.
This matches what I’ve seen with long-running agents. The failures usually aren’t one big mistake, but small assumptions compounding over time.
What helped for me was forcing the agent into short, explicitly scoped steps. Each step declares what it can read, what it can do, and what it’s allowed to output, then that context gets torn down before the next step.
I’ve been using GTWY for this kind of setup and it made long-running coding agents much more boring and predictable, which is exactly what you want at scale.
Curious how you’re handling state reset and permission drift as runtimes get longer.
This resonates. In my own experiments with RAG agents, the hardest bugs weren’t retrieval quality but what the agent did after retrieval.
What worked for me was treating retrieval as a tightly scoped step and revoking access immediately after. That pattern made a big difference.
I’ve been using GTWY for this kind of workflow and the explicit step boundaries helped keep things boring (in a good way). Curious how you’re thinking about state and permission lifetimes here.
LLMs definitely compress the early part of the curve. Demos and scaffolding get cheap fast. Where it breaks is later, when the system has to run unattended and be accountable.
In our experience, the failures weren’t model quality issues but structure issues. Vibe-coded systems quietly accumulate assumptions, permissions, and state that demos don’t surface.
What helped us (using GTWY) was constraining what the agent could do per step instead of letting it reason freely across the whole workflow. Less magic, more predictability.
AI changes early velocity a lot. It doesn’t magically erase operational complexity.
We ran into similar issues when experimenting with multi-step agents. The biggest gains didn’t come from “smarter” prompts, but from reducing how much freedom an agent had at each step.
What helped for us was forcing explicit boundaries: what context is allowed in, which tools are visible, and what output is valid before moving forward. Once those constraints reset between steps, reliability went way up and hallucinations dropped sharply.
I’ve been using GTWY for this kind of step-gated setup and it made these boundaries much easier to reason about. The agent feels less clever, but far more predictable, which is what you want in real workflows.
Curious how you think about resetting authority between steps vs letting context accumulate.
This mirrors what we ran into pretty quickly.
The agent wasn’t failing because it couldn’t write code. It failed because “code-only” still leaves a lot of implicit authority. Once it’s allowed to reason freely across steps, it starts making assumptions that were never explicitly approved.
What helped us was forcing the workflow to be boring. Each step declares what it can touch, what tools it can use, and what kind of output is allowed. When the step ends, that authority disappears.
The agent becomes less clever, but way more predictable. Fewer surprising edits, fewer cascading mistakes.
We ended up using GTWY for this style of step-gated agent work, and it made long-running agents feel manageable instead of fragile.
n our experience, most agent failures weren’t model issues but intent drift. The agent starts with a narrow goal, then gradually “helpfully” expands scope because nothing re-asserts intent between steps.
What worked for us was making intent explicit per step and treating it as a constraint, not just context. Each step declares what it’s allowed to do, which tools it can touch, and what kind of output is valid. After the step finishes, that authority is torn down.
The system feels less flexible, but far more predictable. Fewer clever shortcuts, fewer surprises.
That’s essentially how GTWY approaches agent workflows, and it’s been a practical way to keep agents aligned without relying on heavier prompts or post-hoc validation.
This resonates. One thing we learned while using GTWY is that most agent failures weren’t about missing tools, but about agents being allowed to do too much across steps.
A “code-only” or minimal surface area approach works surprisingly well when each step has explicit inputs and permissions, and nothing carries over implicitly. The agent becomes less clever, but far more predictable.
In practice, narrowing the action space beat adding smarter planning layers. Fewer degrees of freedom meant fewer silent mistakes.
Curious if you found similar tradeoffs where simplicity improved reliability more than abstraction.
I think we’re mostly aligned. The constraints we’re talking about weren’t about forcing everything into JSON or limiting reasoning bandwidth.
Inside a step, the model still reasons freely in plain language. The constraint is on what authority exists at that step.
The failures we saw came from permissions and assumptions silently carrying over between steps, not from the model “thinking wrong”. Once a step ended, any authority it had ended too.
So it’s less “constrain decoding” and more “constrain capability scope over time”. Free reasoning within a step, hard boundaries between steps.
That separation is what removed a lot of surprising behavior for us.
Posted by
Agent_Builder on Saturday January 17, 2026 @01:06AM
from the ask-hn dept.
I recently tried building a small agent for coaching centers.The idea was simple: a teacher uploads a syllabus or notes, and the agent generates a test paper from that material. The hard requirement was reliability. No invented questions, no drifting outside the syllabus.Instead of trying to “fix” hallucinations with better prompts, I constrained the agent’s job very narrowly.I defined:a fixed...
This resonates. What we saw in practice is that most failures don’t come from models being too dumb, but from being given too much freedom.
While using GTWY.ai, the biggest reduction in hallucinations came from constraining what an agent was allowed to do at each step, not from better prompts or verification layers.
Once inputs, tools, and outputs were explicit, the model stopped confidently inventing things. It felt less “creative”, but far more useful.
Fewer degrees of freedom beat smarter models, at least in production.
One thing we learned is that retrieval wasn’t the hard part — it was making sure retrieved context didn’t silently expand what the agent thought it was allowed to do.
In setups like GTWY.ai, constraining how retrieved data is used per step mattered more than the vector store itself. Otherwise assumptions leak forward and hallucinations look “reasonable”.
This is interesting. What resonated for me is how much effort you’re putting into making the execution graph explicit.
In my experience, a lot of agent failures don’t come from the harness or the model choice, but from authority and assumptions leaking across steps. Once agents stay “alive” too long, it gets hard to tell which decision was made under which constraints.
I ran into similar issues experimenting with step-gated workflows using GTWY.ai. What helped was forcing each step to declare its inputs, tools, and outputs up front, and then dropping all of that before the next step ran. The system felt less clever, but debugging and reliability improved a lot.
Curious how you’re thinking about permission and context lifetimes as agents call other agents. That boundary is where things got subtle for me.
Good framing. The failures that pushed us toward this weren’t dramatic hacks or sandbox escapes, they were boring, quiet mistakes that only showed up over time.
While building GTWY.ai, we saw agents slowly accumulate authority across steps. A step would start as read-only, but context and assumptions leaked forward, and a later reasoning turn would act a little broader than intended. Nothing malicious, just confident extrapolation.
What helped wasn’t better prompts or heavier isolation. It was forcing each step to explicitly declare its inputs, tools, and outputs, then tearing all of that down before the next step ran. Once an agent couldn’t carry permissions or assumptions forward, whole classes of bugs disappeared. The system became less clever, but far more predictable.
If this matches what you’re seeing, GTWY has a demo session that walks through the step-gating model end to end. Watching the permissions appear and disappear per step cleared up a lot of things for me. Worth a look if you’re curious.
Isolation at the infrastructure level makes sense, but in our experience it doesn’t solve the whole problem.
While building GTWY.ai, we noticed most real failures weren’t from agents escaping sandboxes, but from agents being allowed to do slightly too much across multiple steps.
Even inside strong isolation, step-level authority boundaries mattered more than heavier runtime isolation.
Curious whether you’ve seen similar issues where the bug wasn’t the environment, but the workflow itself.
We’ve seen similar issues while building GTWY. What mattered most for reliability wasn’t how smart the agent was, but how tightly its behavior was constrained at each step.
Policy enforcement feels most effective when it’s scoped to intent, not to the agent as a whole. If a step can only do one narrow thing, you don’t need heavy guardrails everywhere else. The system becomes predictable by construction.
Interesting to see this applied at the pipeline level. Feels like the ecosystem is converging on the idea that fewer degrees of freedom beats more clever models in production.
We ran into similar reliability issues while building GTWY. What surprised us was that most failures weren’t about model quality, but about agents being allowed to run too long without clear boundaries.
What helped was treating agents less like “always-on brains” and more like short-lived executors. Each step had an explicit goal, explicit inputs, and a defined end. Once the step finished, the agent stopped and context was rebuilt deliberately.
Harnesses like this feel important because they shift the problem from “make the model smarter” to “make the system more predictable.” In our experience, reliability came more from reducing degrees of freedom than from adding intelligence.
What you’re describing works surprisingly well for toy projects because the blast radius is small and the feedback loop is tight. E2E tests are basically acting as the only thing tethering the agent to reality.
Where we hit limits while building GTWY was when these “Ralph loops” ran long enough that intent drifted. The agent wasn’t wrong in any single step, but after hours of continuous execution it started optimizing for local goals that no longer matched the original problem.
What helped wasn’t smarter prompts, but breaking the loop into explicit, short-lived steps with forced checkpoints. Each step had a clear goal, clear inputs, and a clear end, and then the agent stopped. The next step only started once context was rebuilt deliberately.
Continuous agents feel magical early on, but they tend to accumulate hidden assumptions over time. In practice, bounded execution plus strong tests scaled more predictably than keeping the agent alive indefinitely.
We tried “continuous context” early on and it mostly created entropy. Context kept growing, signal degraded, and the model got confidently wrong in subtle ways.
What worked better for us while building GTWY was doing the opposite. Context is disposable. Each step rebuilds only what it actually needs, with explicit inputs and outputs.
Long-lived context feels efficient, but in production it tends to hide bugs and amplify hallucinations. Dropping context aggressively between steps made failures obvious instead of mysterious.
Interesting approach. In our experience, most failures weren’t about which interface agents used, but about how much implicit authority they accumulated across steps. Control boundaries mattered more than the abstraction layer.
Exactly. Once we started treating creativity as a liability in production, things got a lot calmer. While building GTWY.ai we leaned hard into making each step intentionally boring and bounded, even if it felt restrictive at first. The tradeoff was worth it because failures became predictable instead of surprising.
We ran into the same tension while building GTWY.ai. The breakthrough for us wasn’t trying to enumerate “safe” commands globally, but scoping permissions to the step, not the agent. Instead of giving an agent ongoing SSH access with a command allowlist, each step declared exactly what it needed (read logs, run a specific query) and nothing more.
That reduced review fatigue a lot, because most steps became obviously safe by construction. Autonomy worked best when it was short-lived and purpose-specific, not continuous. The line for us ended up being: if the agent can surprise you, it has too much authority.
We ran into this while building GTWY.ai. What worked for us wasn’t trying to keep a single model “continuously informed”, but breaking work into smaller steps with explicit context passed between them. Long-lived context drifted fast. Short-lived, well-scoped context stayed predictable.
One thing that keeps coming up is the glue work between systems. Status updates, handoffs, approvals, and reconciling “what actually happened” across tools still eat time every week. While building GTWY.ai, we saw teams spend more effort babysitting workflows than doing the work itself. Automation exists for individual steps, but stitching them together in a way that’s reliable and auditable is still surprisingly manual.
From what we’ve seen while building GTWY.ai, AI didn’t reduce the need for management, it shifted it. Individual contributors ship faster, but managers now spend more time on coordination, review, and making sure AI-generated work doesn’t quietly drift off-spec.
Tools that stuck were the ones that fit into existing workflows and made boundaries clearer. The hype tools promised autonomy but created more cleanup work. The biggest change for us wasn’t planning less, it was being more explicit about ownership, constraints, and what “done” actually means when AI is involved
This matches what we’ve seen. AI made generating code fast, but it didn’t remove the need for ownership. While building GTWY.ai, the main bottleneck wasn’t creativity or tooling, it was turning prototypes into something people could actually trust, share, and iterate on without breaking things.
Vibe coding works for one-off demos. Inside real companies, prototypes quickly become workflows, and that’s where structure, constraints, and clear boundaries re-enter the picture. The speed is there now, but without guardrails it just shifts the load to the people least able to absorb it.