Frontier Harness Design Breakdowns — PentAGI¶
PentAGI is the penetration-testing agent system used for this course's own benchmarking work (see E01). Its README documents its architecture in enough detail to map against the four HCP subsystems from L05 — a real system, not a toy, built by a different team, independently converging on (and diverging from) the same four concerns.
Sourcing
Everything below is quoted or closely paraphrased from PentAGI's public README as of this writing. This is read-only analysis — nothing here was built by or tested against PentAGI's actual code.
Coverage at a glance¶
flowchart TD
subgraph HCP["This course (HCP)"]
direction LR
HS[State: StateStore] --- HV[Verification: Verifier] --- HSc[Scope: ScopeEnforcer] --- HL[Lifecycle: SessionLifecycle]
end
subgraph Pentagi["PentAGI, as documented"]
direction LR
PS["State: Postgres+pgvector,<br/>3 memory kinds — strong"] --- PV["Verification: agent-reported<br/>status + Reflector — weak"]
PV --- PSc["Scope: Docker sandbox (strong) +<br/>prompt-only target scope (weak)"]
PSc --- PL["Lifecycle: Orchestrator phases +<br/>Planner/Adviser — strong"]
end
HS -.inspired by, more elaborate.-> PS
HV -.gap PentAGI doesn't close.-> PV
HSc -.split: infra strong, task weak.-> PSc
HL -.converges independently.-> PL
style PV fill:#3a1a1a,stroke:#ef476f
PentAGI is stronger than this course's reference implementation on raw state modeling, comparable on lifecycle, and split on scope — strong at the infrastructure layer, weak at the task layer. Verification is the clearest gap: nothing in the documented design closes the "don't trust the agent's own report" loop that L03 treats as non-negotiable.
State¶
PentAGI's data model is a hierarchy: Flow → Task → SubTask → Action, with
Artifacts and Memory attached to actions. It explicitly separates three
memory kinds — long-term (vector store, knowledge base), working (current
context, goals, system state), and episodic (past actions, outcomes,
success patterns) — and persists all of it in PostgreSQL with pgvector.
Compare this to L04's CPU/RAM/disk
framing: PentAGI's "working memory" is RAM, its "long-term" and "episodic"
memory are disk, and the distinction is load-bearing enough that they
named it explicitly rather than leaving it implicit in how prompts are
built. Where this course uses one StateStore interface
(HCP), PentAGI uses
a relational+vector schema — more expressive, more infrastructure to run.
Verification¶
This is the one subsystem the README doesn't clearly have. Task completion
depends on agent-reported status (pending/running/done/failed) and
supervisory agents — a "Reflector" that "guides agents to proper completion
when approaching limits," invoked after repeated failed tool-call attempts.
There's no description of an independent check confirming a reported
finding is actually correct, the way
L03 argues a security
harness needs. This doesn't mean PentAGI's findings are wrong — human
analysts presumably review the "Detailed Reporting" output — but the
harness itself, as documented, doesn't close that loop the way this
course's Verifier interface does.
Scope¶
PentAGI's scope story is split between two layers that this course treats as one:
- Infrastructure-level: "All operations are performed in a sandboxed
Docker environment with complete isolation," with separate Docker
networks for core services, monitoring, and analytics, and hard call
limits (
MAX_GENERAL_AGENT_TOOL_CALLS=100). This is real enforcement, analogous to AgentCage but at the container level instead of the Python-process level. - Task-level: target scope ("stay within the provided target only") is enforced through the prompt, not a technical mechanism the README describes. That's the gap L02 calls out directly: a scope the agent's own reasoning is expected to respect, rather than one enforced below it, can be talked out of by exactly the kind of task that's designed to find gaps.
One operational detail worth flagging on its own: the README warns that
mounting DOCKER_SOCKET "grants an autonomous agent the host Docker API,"
and recommends a hardened dind worker instead — a direct, specific instance
of "enforcement has to sit below the agent's own code" (L02) stated as an
operator warning rather than a harness guarantee.
Lifecycle¶
An Orchestrator delegates across phases (research → planning → execution)
to specialist agents (Pentester, Coder, Installer, Searcher, and others).
Two beta features map directly onto lifecycle concerns this course treats
as first-class: a Planner that generates "3–7 specific, actionable steps"
before execution starts (init-time scoping of the task), and an Adviser
"automatically invoked when execution patterns indicate potential issues"
— a checkpoint-triggered intervention rather than the fixed
init/checkpoint/teardown hooks SessionLifecycle defines, but recognizably
the same problem: a session needs more structure than "run until done."
Takeaway¶
PentAGI converges on state and lifecycle as first-class concerns — more elaborately than this course's reference implementation, in fact — but treats scope as mostly infrastructural and verification as mostly supervisory rather than independent. That's a reasonable set of trade-offs for a tool whose output is reviewed by a human analyst before anyone acts on it. It would be a weaker set of trade-offs for the autonomous, cross-model benchmarking use case this course is built around, where nothing downstream is checking the agent's own report before a score gets recorded — which is exactly why HarnessBench and EvoBench insist on independent verification as a hard requirement, not an optional layer.