Skip to content

Start of perfect meetings - #112

Merged
neilsarkar merged 7 commits into
mainfrom
nsarkar/perfect-meetings
Sep 28, 2026
Merged

neilsarkar merged 7 commits into
mainfrom
nsarkar/perfect-meetings

Conversation

@neilsarkar

Copy link
Copy Markdown
Contributor

No description provided.

@neilsarkar
neilsarkar requested a review from jclem September 28, 2026 20:03

@pi-security-bot pi-security-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security Review

Found two Medium issues: unaccepted external invitations can trigger unbounded Gmail/AI work, and attacker-controlled meeting content is combined with private email excerpts in a web-enabled agent prompt. No posture model covered this path; reachability is inferred from the automatic calendar trigger, with impact bounded to one installation and the agent's limited grants.


Pi · Helpful? Reply below to let us know! 🦣

? inclusiveEndDate(period.start.date, period.end.date)
: period.end.dateTime,
isAllDay,
cancelled:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Medium — Unaccepted invitations automatically consume Gmail and AI resources
responseStatus === "needsAction" remains scheduled, so an external sender can create unique invitations that are ingested without the user accepting them. Each resulting Meeting page triggers Gmail searches and a research session, allowing invite spam to consume AI credits and fill the databases. Require an explicit accepted/tentative RSVP before starting prep, and add per-user run limits.


Pi · Helpful? Reply below to let us know! 🦣

agent_id: targets.agentId,
message: researchPrompt(
meeting,
withKnownNames(attendees, contacts, excerpts),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Medium — Attacker-authored meeting text shares an instruction channel with private email excerpts
An external organizer controls the meeting title/agenda and email senders control snippets; researchPrompt concatenates these with up to ten recent Gmail threads per attendee into the ordinary message of a web-enabled agent. An injected instruction can cause unrelated private excerpts to appear in outbound searches or attacker-chosen Markdown/links persisted by writeBrief. The agent has no page grants or trusted URLs, which bounds impact, but private email summarization should run in a web-disabled stage, external fields should be explicitly treated as untrusted, and persisted output should be restricted to plain text.


Pi · Helpful? Reply below to let us know! 🦣

neilsarkar and others added 6 commits September 28, 2026 16:09
Inline databases in APP.md must be parented to the App page, which the
SDK cannot declare yet, so the home page links to them instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rename the package to @notion-cookbook/perfect-meetings, add its catalog
entry, match the apps-default agent files (AGENTS.md, CLAUDE.md, and
.claude/skills as symlinks into .agents/), and format pnpm-workspace.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop the duplicate title heading and link the databases with Notion as
Code mentions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@neilsarkar
neilsarkar merged commit 440d2eb into main Sep 28, 2026
9 checks passed
@neilsarkar
neilsarkar deleted the nsarkar/perfect-meetings branch September 28, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants