Project 3: Bounded Research Agent
Build a research workflow that can search approved sources, extract findings, compare evidence, and produce a report with source links. The agent should have a small read-only tool set, a maximum step count, a deadline, and a clear policy for conflicting sources. It should never publish, email, purchase, or modify records without explicit approval.
Track which source supports each finding. Separate facts from inference and mark unsupported claims. Evaluate source relevance, citation validity, completeness, and whether the agent stayed within the allowed tool budget. If a tool returns hostile instructions, treat them as content rather than policy.
Do not expose arbitrary shell, unrestricted network access, or write-capable tools to a research agent by default.
for (let step = 0; step < MAX_STEPS; step++) {
const proposal = await model.proposeNextAction(state, approvedToolSchemas);
const validated = validateProposal(proposal);
if (validated.type === "final") break;
assertReadOnlyTool(validated.tool);
const result = await executeAuthorizedTool(validated, userContext);
state = updateState(state, validated, result);
}- Limit tools to the task and user permissions.
- Keep side effects behind explicit approval.
- Require source traceability and evaluate the report.
What prevents a research agent from running indefinitely?