Docs

Documentation

Every permission Jaha asks for

Jaha is built so your own team can set it up without calling ours. This page lists every permission the product ever asks for and what each one is for. The rule behind all of them: each screen asks only for what that feature needs, read-only wherever reading is enough, and nothing ever asks for the right to delete your records.

Microsoft 365: one admin consent

Everything Jaha does in your Microsoft 365 organization runs on one app registration, granted on a single admin consent screen (Settings → "Grant access in Microsoft 365"). These are application permissions on Microsoft Graph:

User.Read.AllDirectory sync: people, managers, "who's who" and matching assignees.
Chat.Read.AllReading a meeting chat's subject and members so the bot knows which meeting a message belongs to.
OnlineMeetings.Read.AllMatching a join link to its meeting, and meeting-start notifications for auto-join.
OnlineMeetingTranscript.Read.AllForwarder mode: reading the transcript Teams itself created.
OnlineMeetingArtifact.Read.AllMeeting files and records when the bot is @mentioned into a meeting.
Calendars.ReadWriteMeetings Jaha schedules, reads back or cancels for you.
Mail.ReadContext from recent email when a question involves email.
Mail.SendRecap emails, sent from the mailbox you choose.
Files.ReadWrite.AllSaving documents to OneDrive when you ask for that.
Sites.ReadWrite.AllStoring meeting recordings and audio in your own SharePoint site (see "Recordings in your own Microsoft 365").
Tasks.ReadWrite.AllCreating Planner tasks from action items.
Group.Read.AllListing teams for the channel picker.
Channel.ReadBasic.AllListing channels for the same picker.
TeamsAppInstallation.ReadWriteForChat.AllInstalling the app in each meeting's chat as the bot joins, so @JahaBot commands work for everyone in the room.
AppCatalog.Read.AllFinding the app's own catalog ID, which that installation needs.

Joining calls

The bot joins meetings as an application-hosted media bot, which uses the Graph Communications permissions:

Calls.JoinGroupCall.AllJoining a scheduled or live meeting.
Calls.AccessMedia.AllReceiving the meeting's audio and video streams. Transcription and recording depend on this.
Calls.JoinGroupCallAsGuest.AllJoining meetings where the bot enters as a guest.
Calls.Initiate.AllOnly needed for dial-out. Otherwise you can leave it ungranted.
Auto-join at meeting start also needs a CsApplicationAccessPolicy granted to your organizers. It's two lines of PowerShell your admin runs once, and Getting started shows them word for word.

Recordings in your own Microsoft 365

Once Sites.ReadWrite.All is granted, Settings → media destination accepts your SharePoint site URL. Every recording and audio file is then stored in that site, inside your organization, under your own retention policy. Jaha keeps only the details it needs to find and play them. Only media files are stored there.

Connectors: one consent per tool

Each tool you connect has its own OAuth consent screen listing exactly these scopes. Connect only what you use and disconnect any time. The index built from a source is deleted along with it:

Google Drive (reading)drive.readonly
Google Drive (saving files)drive.file (only files the app itself creates)
Google Calendarcalendar.events.readonly
Zoho CRMZohoCRM.modules.ALL · ZohoCRM.coql.READ · ZohoCRM.org.READ · ZohoCRM.users.READ
Zoho ProjectsZohoProjects.portals.READ · projects.READ · milestones.READ · tasks.READ · bugs.READ · timesheets.READ · tasks.CREATE · bugs.CREATE
Zoho CRM module metadataZohoCRM.settings.modules.READ · ZohoCRM.settings.fields.READ
HubSpotoauth · crm.objects.{contacts.read/write, companies.read, deals.read, quotes.read, line_items.read, subscriptions.read, owners.read, custom.read} · crm.schemas.{companies, contacts, deals}.read · sales-email-read
Salesforceapi · refresh_token · offline_access
Pipedrivescopes are set in the Pipedrive app itself
Attiorecord_permission:read-write · object_configuration:read · note:read-write · task:read · user_management:read
Linearwrite
Jiraread:jira-work · offline_access
Notionno scope string: access is exactly the pages you share with the integration
Slacksearch:read (user scope)
Reading is enough to answer questions, so almost everything above is read-only. The exceptions write exactly one kind of record (a note, a task or a file) and say so on their consent screen.

Some tools have no OAuth consent screen, so you connect them by pasting a token in Settings → Connectors: ServiceNow (instance URL plus a service account with the itil role, used both to raise incidents, requests, changes and problems from action items and for an incoming ticket webhook that suggests bridge calls), Asana, ClickUp, monday.com, Todoist, Trello, Dropbox and Box, plus signed Webhook and Zapier destinations. Setup steps are on each connector card and in the connector setup templates.

When you need to reconnect

A consent covers what existed when it was given. When a new feature needs a scope your connection doesn't have, the existing token can't pick it up on its own. Jaha tells you right when it matters ("reconnect the Zoho connector to grant Projects access"), and the fix is always the same: reconnect that one tool with the same sign-in, in one click. Nothing else changes.

The 5-step checklist

1. Install the Teams app from your org catalog. 2. Settings → "Grant access in Microsoft 365". One admin consent covers §1 and §2. 3. If you like, set the SharePoint media destination (§3). 4. Connect the tools you use (§4). 5. If you want auto-join at meeting start, run the access-policy PowerShell. Everything else (transcripts, recording, insights, memory across meetings) needs no more permissions.

Did this page help?