Office 365 Connector

AdvisoryAudited by Static analysis on Apr 30, 2026.

Overview

No suspicious patterns detected.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If an agent or user runs this command accidentally, the token could be captured in terminal history, logs, or conversation context and reused by someone who sees it.

Why it was flagged

The skill can print a Microsoft Graph bearer access token to stdout. With the granted scopes, that token can be used to access or modify the user's Microsoft 365 data until it expires.

Skill content
} else if (command === 'token') { getAccessToken(accountName).then(token => { console.log(token); process.exit(0); })
Recommendation

Remove or disable the token-printing command, or gate it behind explicit confirmation with redaction. Users should avoid asking the agent to display tokens.

What this means

A bad account name could cause the skill to write or delete an unintended local JSON file within the user's filesystem permissions.

Why it was flagged

The account name is used directly in a filesystem path and later used for deletion. Without validation, crafted names containing path traversal segments could target files outside the intended office365 token directory.

Skill content
function getAccountTokenPath(accountName) { return path.join(ACCOUNTS_DIR, `${accountName}.json`); } ... if (fs.existsSync(tokenPath)) { fs.unlinkSync(tokenPath); }
Recommendation

Restrict account names to a safe pattern such as letters, numbers, dashes, and underscores; normalize and verify token paths remain inside the intended directory before reading, writing, or deleting.

What this means

Granting consent gives the skill access to read and change mail, calendars, and contacts, and to refresh access without signing in every time.

Why it was flagged

The OAuth flow requests broad delegated Microsoft Graph permissions, including send/write permissions and offline refresh access. This is aligned with the stated connector purpose, but it is high-impact.

Skill content
const SCOPES = [ 'User.Read', 'Mail.Read', 'Mail.ReadWrite', 'Mail.Send', 'Calendars.Read', 'Calendars.ReadWrite', 'Contacts.Read', 'Contacts.ReadWrite', 'offline_access' ].join(' ');
Recommendation

Only grant these permissions if you need full Office 365 automation. Prefer a dedicated Azure app with the smallest permission set you actually use, and revoke tokens when no longer needed.

What this means

Users have less registry-level information to verify the origin and credential needs of a high-privilege Office 365 connector.

Why it was flagged

The registry metadata provides limited provenance and does not declare credential requirements, even though the skill documentation and code use Azure client credentials and local OAuth tokens.

Skill content
Source: unknown; Homepage: none; Required env vars: none; Primary credential: none
Recommendation

Review the included source before use, verify the publisher, and treat the Azure client secret and stored OAuth tokens as sensitive credentials.