Inspiration

AI agents are becoming capable of taking actions, not just answering questions. That creates a practical safety question: how can people give agents useful access while still keeping control over sensitive actions? We built PermissionGuard to explore a simple answer: check proposed actions against policies, ask a person to review risky ones, and keep a record of the decision.

What it does

PermissionGuard is a full-stack prototype for reviewing AI-agent actions. A user can submit an action in the policy simulator, see whether it is allowed, denied, or needs approval, and review the resulting request and audit entry. The demo includes examples such as reading approved documentation, sending an external email, exporting data, and running a system command.

How we built it

We built the interface with React and TypeScript and connected it to a Python FastAPI backend. The API evaluates requests using the project’s policy logic and stores policies, requests, approvals, and audit records in a local SQLite database. This lets the demo retain its state across page reloads and restarts.

What we learned

We learned how to connect a frontend to a backend API, persist application state in a database, and represent approval steps as part of an authorization flow. We also learned how important it is for a security demo to distinguish a decision from an action actually being carried out.

Challenges

The project began in a codebase that also contained an older GestureLink AI project. We had to separate the PermissionGuard app from that project’s API and hardware-related code, then make the frontend use the correct backend. We also worked to make sample data and status messages accurately describe what the demo does.

Current scope

This is a local hackathon prototype. It demonstrates policy evaluation, human approval tracking, and audit history, but it does not connect to real email, cloud, database, or device systems. Approving a request records the decision; it does not execute the requested action.

Built With

Share this project:

Updates

Submission history