Capability library / Application package

Microsoft 365 package v1.1.0

Read Microsoft 365 users, mailbox messages, and calendar events; send mail, create events that can invite attendees, and post Teams channel messages. Ordinary Teams posting needs a separate delegated user token.

Review state: Reviewed · Distributable: yes, digest matches the release manifest

This page describes AAES Govern’s controls. AAES Operate has private-work permissions, operational reviews and recorded-spend limits; it does not include Govern. About AAES Govern

Before you enable this package

USER_ID, TEAM_ID and CHANNEL_ID are placeholders the deployment must substitute before enabling. The Teams channel post uses a separately named delegated-token reference; with application permissions it works only in the migration scenario Microsoft documents. Creating a calendar event with attendees dispatches invitations immediately, so that capability declares create and send at R3.

Read each action's effects and exclusions below. Before installation, also read the complete package requirements, including credential issuance, scope, expiry, and provider permissions. These are deployment prerequisites, not capabilities this package supplies.

Capabilities (6)

Each capability below is one registered operation. The complete package JSON includes its exact network destination allowlist. The repository stores it at packs/microsoft365.json and embeds a copy in the release binary.

Versions. This package is version 1.1.0. Its capabilities carry their own version numbers: 5 at version 1.0.0, 1 at version 1.1.0, as shown on each capability below.

Risk tiers. R0 is the minimum for reads. R2 is the minimum for write, create, update, execute, and invoke. R3 is the minimum for delete, send, pay, deploy, approve, share, and transfer. Operators can raise these levels. A minimum tier does not measure the operation's business or confidentiality risk.

On supported execution paths routed through AAES Govern, the R3 actions listed below require approval by an authorized person. Bypass paths and observation-only registrations are outside that guarantee. A provider's restoration feature does not remove this approval requirement. A provider-side approval, such as approving a GitLab merge request, is also separate from AAES Govern human approval. The capability matrix shows which execution paths are implemented, restricted to lab use, or refused at startup. Live compatibility must be tested in your environment.

Field guide. Endpoint is the service address and request method. Connector is the adapter that makes the call. Custody describes how the credential is held; the credential reference identifies the value to resolve. Data class sets handling requirements: pii means personal data, financial means financial records, and internal means internal organizational data.

microsoft365.users.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://graph.microsoft.com/v1.0/users
Connector
http
Custody
customer_vault
Credential ref
secret-ref-msgraph-app-credential
Data class
pii

Read users.

List the tenant's users: display names, mail addresses, phone numbers and job titles are personal data, so the read is classified as pii (personal data).

microsoft365.mail.messages.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://graph.microsoft.com/v1.0/users/USER_ID/messages
Connector
http
Custody
customer_vault
Credential ref
secret-ref-msgraph-app-credential
Data class
pii

Read mail messages.

Read the messages in one user's mailbox, including Deleted Items. Message bodies, senders and recipients are personal data, so the read is classified as pii (personal data). USER_ID is a placeholder to replace before enabling.

microsoft365.mail.send v1.0.0R3

Kind
tool
Action
send
Endpoint
POST https://graph.microsoft.com/v1.0/users/USER_ID/sendMail
Connector
http
Custody
customer_vault
Credential ref
secret-ref-msgraph-app-credential
Data class
pii

Send mail.

Send mail as one user. A sent message cannot be recalled after delivery, and send is one of the designated actions requiring human approval, which is why it carries the minimum R3 tier. Recipients are personal data and the body may carry more, so the capability registers at the pii class. USER_ID is a placeholder to replace before enabling.

microsoft365.calendar.events.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://graph.microsoft.com/v1.0/users/USER_ID/events
Connector
http
Custody
customer_vault
Credential ref
secret-ref-msgraph-app-credential
Data class
pii

Read calendar events.

Read the events in one user's calendar, which lives in the mailbox. Attendees, organizers, subjects and bodies are personal data, so the read is classified as pii (personal data). USER_ID is a placeholder to replace before enabling.

microsoft365.calendar.events.create v1.0.0R3

Kind
tool
Actions
create, send
Endpoint
POST https://graph.microsoft.com/v1.0/users/USER_ID/events
Connector
http
Custody
customer_vault
Credential ref
secret-ref-msgraph-app-credential
Data class
pii

Create calendar events.

Create an event in one user's calendar. When the created event includes attendees, the server sends invitations to all attendees, and Microsoft documents that this dispatch cannot be configured — so the capability declares create and send at the minimum R3 tier: send is one of the designated actions requiring human approval, and a dispatched invitation cannot be recalled after delivery even though the calendar entry itself can later be deleted. USER_ID is a placeholder to substitute before enabling.

microsoft365.teams.channel_message.send v1.1.0R3

Kind
tool
Action
send
Endpoint
POST https://graph.microsoft.com/v1.0/teams/TEAM_ID/channels/CHANNEL_ID/messages
Connector
http
Custody
customer_vault
Credential ref
secret-ref-msgraph-delegated-token
Data class
pii

Send Teams channel messages.

Post a message to a Teams channel. Recipients may have seen a posted message even if it is later removed, and send is one of the designated actions requiring human approval, which is why it carries the minimum R3 tier. The posted message lands in a channel whose messages are personal data, and Microsoft documents that the created chatMessage carries the sender's user identity and display name, so the capability is classified pii (personal data), the same class as the teams-channel resource and the mail send capability.

This capability uses its own credential reference, secret-ref-msgraph-delegated-token: a delegated Microsoft Graph access token carrying the ChannelMessage.Send delegated permission, obtained and renewed by an external process — Microsoft supports application permissions for this operation only in the migration scenario (Teamwork.Migrate.All against a channel in migration mode), which this pack does not register.

See the pack notes; TEAM_ID and CHANNEL_ID are placeholders to substitute before enabling.

Credential reference

The credential field names a reference rather than containing credential material. Packs are designed not to contain secrets; the format checks cover only known credential formats and cannot prove that arbitrary text contains no secrets. Installing a package registers its capabilities. Configure the provider credentials, endpoints, and network access, then test the integration in your environment before enabling it.

Reference
secret-ref-msgraph-app-credential
Custody
customer_vault
Injection
header (Authorization)

Configure the value and injection format specified in the package. Assign responsibility for credential rotation and revocation, restrict provider permissions, and keep credential material out of logs and responses.

Complete credential requirements

The value stored under this reference is the complete Authorization header value (scheme included): 'Bearer ' followed by an OAuth2 access token for Microsoft Graph, minted with the client credentials flow from the client's own app registration against login.microsoftonline.com — POST /{tenant}/oauth2/v2.0/token with scope https://graph.microsoft.com/.default — and placed in the client's own secret manager by an external deployment process.

This grant issues no refresh token, so there is no refresh path to review: renewal ownership sits with the external process, which obtains a replacement access token before the current one expires (access tokens last about an hour) and stores the new complete header value.

The stored value is never the client secret or certificate assertion material — those stay with the external token process, and a certificate credential is preferable to a client secret for the app registration. Tokens can be revoked by rolling or removing the app registration's credentials; an expired or revoked value fails closed.

With client credentials there is no signed-in user, so the token carries application permissions: consent only the minimum set that makes these capabilities work, and weigh before consenting that Mail.Send as an application permission lets the app send mail as any user in the tenant.

Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack. The Teams channel capability uses a different reference with a delegated-token contract — see the pack notes.

Resources

  • m365-directory (api, pii): https://graph.microsoft.com/v1.0/users
  • m365-mailbox (mailbox, pii): https://graph.microsoft.com/v1.0/users/USER_ID
  • teams-channel (channel, pii): https://graph.microsoft.com/v1.0/teams/TEAM_ID/channels/CHANNEL_ID

Technical package and review record

Complete provider requirements and exclusions

USER_ID (a user id or userPrincipalName), TEAM_ID and CHANNEL_ID in the endpoint paths are placeholders: the deployment must substitute the concrete user, team and channel each capability is bound to before enabling the pack, and the pack must not be enabled with the literals in place — the review does not rely on Microsoft Graph rejecting literal placeholder identifiers as the control. The egress allowlist stays graph.microsoft.com, a real shared API host, not a placeholder.

Use an app registration whose Microsoft Graph permissions cover only what these capabilities need; the pack does not create one.

The pack registers endpoints; the deployment chooses scopes, and the application-permission vs delegated-permission distinction is the deployment's decision: application permissions (User.Read.All, Mail.Read, Mail.Send, Calendars.ReadWrite) are tenant-wide daemon-grade power consented by an admin, while delegated permissions act as one signed-in user within that user's own access. microsoft365.teams.channel_message.send carries its own credential reference, secret-ref-msgraph-delegated-token, and the contract is deliberately different from the pack-level reference: Microsoft documents application permissions for posting a channel message only in the migration flow (Teamwork.Migrate.All, against a channel in migration mode), while ordinary channel posting requires the delegated ChannelMessage.Send permission.

The stored value under the Teams reference is therefore a delegated Graph access token obtained and renewed by an external process (delegated flows can issue refresh tokens, and that external process owns the refresh) as the complete 'Bearer <token>' header value; the pack-level client-credentials credential cannot perform ordinary channel posting, the migration scenario is not registered by this pack, and the two references are not interchangeable. sendMail and the Teams post both carry the send action at the minimum R3 tier, and send is one of the designated actions requiring human approval: a message that has left cannot be recalled after delivery.

Calendar event creation declares create and send at the minimum R3 tier: Microsoft documents that creating an event that includes attendees sends invitations to all attendees, dispatched by the server, and that this cannot be configured — so the unrestricted operation carries the send action, not a reviewer warning; a create-only R2 variant would require an actually enforced restriction excluding invitation dispatch, which this pack does not register.

This pack registers only Microsoft Graph v1.0 endpoints: nothing from the beta endpoint, and no $batch, change notifications or subscriptions, delta queries, OneDrive or SharePoint drives, Teams chats (as opposed to channels), or mail, calendar or Teams update and delete operations — documented exclusions, not approximated capabilities. This pack complements rather than duplicates Microsoft Agent 365's own controls: Agent 365 governs agents on Microsoft's agent platform, while AAES Govern applies its controls to agents that call Microsoft Graph through supported Govern execution paths, whichever agent platform they run on.

AAES has not been certified by Microsoft; the endpoints here are configuration to review and test; the vendor has not endorsed it.

Download the complete package JSON for exact network allowlists, credential requirements, exclusions, and setup notes. Read these requirements before installation.

The full documentation review record is supplied in the evaluation package. The evaluation package runs in your environment and comes only with the paid design partnership. This page reproduces the source links and review block; the full record is available for evaluation. Discuss a design partnership to inspect it before installation.

Review block

This section reproduces the review block recorded in the pack file. The evidence and approval record is separate: for a reviewed pack, it is in the evaluation materials and in the release binary's embedded assets.

Review completed: 2026-10-22

8 sources, retrieved 2026-09-21, 2026-09-23

Current documentation links are navigation aids. They do not change the package, its historical sources or its review date. Review dates describe a documentation review, not a live integration test. No package is provider-endorsed or yet tested against a live provider tenant.

Release identity

SHA-256 of the pack file bytes: 57b85f158d855aaebe2f36b4adfa318bcb2f8d74f48d63ca75a2cbce6e739377

Distributable: yes, digest matches the release manifest. Editing a package changes its release identity. A deployment plan checks its own file digests; it does not restore reviewed status or authenticate approval.