Hi Luma Warren (Axon Enterprise),
Thank you for posting your question in the Microsoft Q&A forum.
Based on your description, I understand that you are trying to develop a Teams app that can be pinned by default in the side panel of the Teams client. This app combines:
- A bot for notifications, and
- An iframe-based tab for file management (similar to OneDrive).
You mentioned several challenges:
- Making the tab feel native like OneDrive, including auto-pinning in the sidebar (currently requires manual pinning).
- Persisting tab state (suggesting localStorage or backend sessions).
-  Authenticating and calling Microsoft Graph APIs (e.g., /me/drive/root/children) for file management, which results in 401 Unauthorized errors despite havingFiles.ReadWritepermissions.
- Considering alternatives like Azure Blob Storage with SAS tokens for uploads.
- Real-time file sync using SignalR or WebSockets within Teams iframes.
Please correct me if I misunderstood anything.
After reviewing your manifest and researching these challenges, here are my observations:
1) Auto-pinning the personal app
Teams does not support automatic pinning for custom apps out-of-the-box. However, administrators can enforce pinning organization-wide using App Setup Policies in the Teams Admin Center. You can read more here: https://free.blessedness.top/en-us/microsoftteams/teams-app-setup-policies
2) Graph API calls failing with 401
The endpoint /me/drive/root/children requires Microsoft Graph delegated permissions such as Files.ReadWrite. I noticed you declared this permission in the resourceSpecificConsent (RSC) section of the manifest. However, this is not correct for Graph calls and Graph permissions must be configured in Azure AD App Registration under API permissions.  
Reference: https://free.blessedness.top/en-us/graph/api/driveitem-list-children?view=graph-rest-1.0&tabs=http
3) App registration and webApplicationInfo
From your manifest, I see webApplicationInfo.id is set to an AAD app client ID, but resource is api://botid-BOT_ID. This looks inconsistent.
-  webApplicationInfoshould represent the AAD app for the tab, because the tab needs tokens to call Graph.
-  Typically, you have two parallel components: 
- Bot (with its own AAD app for Bot Framework)
- Tab (with its own AAD app for SSO and Graph calls)
 
- You can package both in one Teams app manifest, but each capability should point to the correct AAD app. Please confirm whether you are using two separate AAD app registrations or a single one for both bot and tab.
For the remaining items (state persistence, Azure Blob + SAS, real-time sync via SignalR), these require deeper design considerations.
I’ll follow up with more details on the remaining challenges after further research.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.