Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
26ae7b6
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
11b4cc0
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
a523cf6
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
8c8672d
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
0bc001b
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
b558427
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
22d7528
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob Apr 30, 2026
d9eb2a0
Update AAD-manifest-customization.md
v-shalinirob Apr 30, 2026
dcd79b4
Update AAD-manifest-customization.md
v-shalinirob Apr 30, 2026
27c74c9
Update AAD-manifest-customization.md
v-shalinirob May 4, 2026
1b7bded
Update extend-m365-teams-message-extension.md
v-shalinirob May 4, 2026
94e5edf
Update extend-m365-teams-personal-tab.md
v-shalinirob May 4, 2026
d6d3bea
Update AAD-manifest-customization.md
v-shalinirob May 4, 2026
45321af
Update AAD-manifest-customization.md
v-shalinirob May 4, 2026
95fdeea
Updates
v-shalinirob May 4, 2026
07545af
Update add deploy4.PNG
v-shalinirob May 4, 2026
49d993a
Update AAD-manifest-customization.md
v-shalinirob May 4, 2026
422cc73
Update validate-schema.png
v-shalinirob May 4, 2026
5c67b89
Update add template.PNG
v-shalinirob May 5, 2026
9c4d4cd
Update add template.PNG
v-shalinirob May 5, 2026
9349251
Updates
v-shalinirob May 5, 2026
0574ae6
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 5, 2026
d32cbe0
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 5, 2026
95e7825
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 5, 2026
501d695
Update AAD-manifest-customization.md
v-shalinirob May 5, 2026
83bc299
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 6, 2026
5cec028
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 6, 2026
82d7c1d
Update zip-app-package.png
v-shalinirob May 6, 2026
0f45d16
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 6, 2026
6c001ff
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 6, 2026
7868ab5
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 6, 2026
09904f8
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 6, 2026
8cd7521
Updates
v-shalinirob May 6, 2026
76829a9
Update validate-app.png
v-shalinirob May 6, 2026
105dd46
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 7, 2026
a6c370d
Update TeamsFx-preview-and-customize-app-manifest.md
v-shalinirob May 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified msteams-platform/assets/images/toolkit-v2/manual/add deploy4.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ Open your app manifest and update the `$schema` and `manifestVersion` values:
}
```

Use Agents Toolkit to [validate your app manifest](../toolkit/TeamsFx-preview-and-customize-app-manifest.md#validate-your-app) and identify any errors.
Use Agents Toolkit to [validate your app manifest](../toolkit/TeamsFx-preview-and-customize-app-manifest.md#validate-your-agent-or-app) and identify any errors.

[!INCLUDE [requirements-targeting](../includes/requirements-targeting.md)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ Open your app manifest and update the `$schema` and `manifestVersion` manually w

---

You can use Agents Toolkit to [validate your app manifest](../toolkit/TeamsFx-preview-and-customize-app-manifest.md#validate-your-app) and identify any errors.
You can use Agents Toolkit to [validate your app manifest](../toolkit/TeamsFx-preview-and-customize-app-manifest.md#validate-your-agent-or-app) and identify any errors.

> [!div class="nextstepaction"]
> [I ran into an issue](https://github.com/MicrosoftDocs/msteams-docs/issues/new?template=Doc-Feedback.yaml&title=%5BI+ran+into+an+issue%5D+Update+the+app+manifest&&author=%40vikasalmal0201&pageUrl=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fmicrosoftteams%2Fplatform%2Fm365-apps%2Fextend-m365-teams-personal-tab%3Ftabs%3Dmanifest-toolkit%23update-the-app-manifest&contentSourceUrl=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fmsteams-docs%2Fblob%2Fmain%2Fmsteams-platform%2Fm365-apps%2Fextend-m365-teams-personal-tab.md&documentVersionIndependentId=b2cf31a5-621a-eeac-26c9-89ada49466c0&platformId=59760ef9-b9b9-09a3-173f-1d97d0420bbc&metadata=*%2BID%253A%2Be473e1f3-69f5-bcfa-bcab-54b098b59c80%2B%250A*%2BService%253A%2B%2A%2Amsteams%2A%2A)
Expand Down
98 changes: 50 additions & 48 deletions msteams-platform/toolkit/AAD-manifest-customization.md

Large diffs are not rendered by default.

106 changes: 70 additions & 36 deletions msteams-platform/toolkit/TeamsFx-preview-and-customize-app-manifest.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
---
title: Customize app manifest in Agents Toolkit
description: Learn how to edit and preview app manifest in local and remote environments, customize app manifest in Visual Studio Code, and ways to validate and update app.
title: Customize Microsoft 365 App Manifest in Agents Toolkit
description: Learn how to edit and preview app manifest in local and remote environments, customize app manifest in Visual Studio Code, and ways to validate and update agent or app.
ms.localizationpriority: medium
ms.topic: overview
ms.date: 05/13/2022
ms.date: 04/30/2026
---

<!-- markdownlint-disable MD001 -->
<!-- markdownlint-disable MD024 -->

# Customize app manifest

App manifest (previously called Teams app manifest) describes how your app integrates into Microsoft Teams. After scaffolding, the default app manifest file is available at `appPackage/manifest.json`. The app manifest file contains some environment variables with format of `${{XX_XX}}`, and the actual values are resolved using Microsoft 365 Agents Toolkit (previously known as Teams Toolkit) with env files such as `env/.env.dev` and `env/.env.local`.
The Microsoft 365 app manifest (previously called Teams app manifest) describes how your agent or app integrates into Microsoft Teams. After scaffolding, the default manifest file is available at `appPackage/manifest.json`. The manifest file contains some environment variables with format of `${{XX_XX}}`, and the actual values are resolved using Microsoft 365 Agents Toolkit (previously known as Teams Toolkit) with env files such as `env/.env.dev` and `env/.env.local`.

To preview app manifest with actual content, Agents Toolkit generates the preview app manifest files under `appPackage/build` folder as shown in the following folder structure:
To preview the manifest with actual content, Agents Toolkit generates the preview manifest files under `appPackage/build` folder as shown in the following folder structure:

```text
└───appPackage
Expand All @@ -21,30 +24,46 @@ To preview app manifest with actual content, Agents Toolkit generates the previe
└───manifest.local.json - Previewed manifest of local Teams app
```

You can preview the app manifest file in local and remote environments.
You can preview the manifest file in local and remote environments.

## Preview the app manifest file in local environment
## Preview the manifest file in local environment

To preview the app manifest file in local environment, select the F5 key to run local debug. After you generate the environment variables in `env/.env.local`, the app package and the preview app manifest are built under `appPackage/build` folder.
To preview the manifest file in local environment, press the **F5** key to run local debug. After you generate the environment variables in `env/.env.local`, the app package and the preview app manifest are built under `appPackage/build` folder.

You can also trigger **Zip Teams App Package** from tree view or **Teams: Zip Teams App Package** from command palette to generate the preview app manifest and app package.
You can also trigger **Zip Teams App Package** from tree view or **Teams: Zip Teams App Package** from command palette to generate the preview manifest file and app package.

# [Teams agent](#tab/agent)

:::image type="content" source="../assets/images/toolkit-v2/toolkit-fundamentals/utility.png" alt-text="Screenshot shows the selection of Zip Teams App Package.":::

# [Teams app](#tab/app)

:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/zip-app-package.png" alt-text="Screenshot shows the selection of Zip Teams App Package.":::
:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/zip-app-package.png" alt-text="Screenshot shows the option of Zip Teams App Package.":::

## Preview the app manifest file in remote environment
---

## Preview manifest file in remote environment

To preview the app manifest file in remote environment, you can trigger **Provision** from tree view or **Teams: Provision** from command palette. It generates environment variables for remote Teams app, build app package and the preview app manifest under `appPackage/build` folder.
To preview the manifest file in remote environment, you can trigger **Provision** from tree view or **Teams: Provision** from command palette. It generates environment variables for remote Teams app, build app package and the preview app manifest under `appPackage/build` folder.

You can also trigger **Zip Teams App Package** from tree view or **Teams: Zip Teams App Package** from command palette to generate the preview app manifest and app package.

:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/zip-app-package (1).png" alt-text="Screenshot shows the option to zip the Teams app package.":::
# [Teams agent](#tab/agent)

:::image type="content" source="../assets/images/toolkit-v2/toolkit-fundamentals/utility.png" alt-text="Screenshot shows the selection of Zip Teams App Package.":::

## Customize app manifest in Visual Studio Code
# [Teams app](#tab/app)

During local debug or provision, Agents Toolkit loads app manifest from `appPackage/manifest.json` and resolves app manifest by environment variables defined in `env/.env.xx`, then creates or updates Teams app in [Developer Portal for Teams](https://dev.teams.microsoft.com/home).
:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/zip-app-package.png" alt-text="Screenshot shows the option of Zip Teams App Package.":::

---

1. You can define your own manifest.json file in `m365agents.yml` and `m365agents.local.yml`.
For example, you can put your manifest.json file in `test/test.json`, and update the `manifestPath` parameters in yaml files.
## Customize manifest in Visual Studio Code

During local debug or provision, Agents Toolkit loads the manifest from `appPackage/manifest.json`. It resolves the manifest using environment variables defined in `env/.env.xx`, then creates or updates the Teams app in [Developer Portal for Teams](https://dev.teams.microsoft.com/home).

1. You can define your own `manifest.json` file in `m365agents.yml` and `m365agents.local.yml`.
For example, you can put your `manifest.json` file in `test/test.json`, and update the `manifestPath` parameters in yaml files.

```text
- uses: teamsApp/zipAppPackage # Build Teams app package with latest env value
Expand All @@ -54,8 +73,8 @@ For example, you can put your manifest.json file in `test/test.json`, and update
outputJsonPath: ./appPackage/build/manifest.${{TEAMSFX_ENV}}.json
```

1. You can define your own environment variables. The default manifest.json contains some placeholders with format of ${{xx_xx}}. You can define your own environment variables and add placeholders in the manifest.json file.
For example, you can customize app description by defining a new environment variable in env/.env.xx file, and update manifest.json with corresponding placeholder.
1. You can define your own environment variables. The default `manifest.json` contains some placeholders with format of ${{xx_xx}}. You can define your own environment variables and add placeholders in the `manifest.json` file.
For example, you can customize app description by defining a new environment variable in env/.env.xx file, and update `manifest.json` with corresponding placeholder.

`.env.dev`

Expand All @@ -76,7 +95,7 @@ For example, you can customize app description by defining a new environment var
}
```

1. Starting with Agents Toolkit 5.10, using the `file` function you can store the value of a field, such as a lengthy or multiline app description, in a separate text file. For example, create a `description.txt` file in the parent folder of `manifest.json` to store your app's complete description. Then, set the value of `description.full` in `manifest.json` as `$[file('description.txt')]`. Agents Toolkit reads the content from the text file and uses it as full description when building an app package.
1. Starting with Agents Toolkit 5.10, you can use the `file` function to store the value of a field, such as a lengthy or multiline app description, in a separate text file. For example, create a `description.txt` file in the parent folder of `manifest.json` to store your app's complete description. Then, set the value of `description.full` in `manifest.json` as `$[file('description.txt')]`. Agents Toolkit reads the content from the text file and uses it as full description when building an app package.

`description.txt`

Expand Down Expand Up @@ -118,13 +137,26 @@ For example, you can customize app description by defining a new environment var
}
```

## Validate your app
## Validate your agent or app

After customization, you might want to validate the manifest or app package. You can trigger **Validate Application** from tree view, or **Microsoft 365 Agents: Validate Application** from command palette.

# [Tree view](#tab/tree)

:::image type="content" source="../assets/images/toolkit-v2/toolkit-fundamentals/utility.png" alt-text="Screenshot shows the selection of validate application under utility.":::

# [Command palette](#tab/command)

:::image type="content" source="../assets/images/toolkit-v2/toolkit-fundamentals/validate-app.png" alt-text="Screenshot shows the option of validate application under utility.":::

---

After customization, you might want to validate your app manifest or app package. You can trigger **Validate Application** from tree view, or **Teams: Validate Application** from command palette. There are two options, **Validate using manifest schema** or **Validate app package using validation rules**.
Validate your agent or app using one of the following options:

:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/validate-application.png" alt-text="Screenshot shows the selection of validate application under utility.":::
- [Validate using manifest schema](#validate-using-the-manifest-schema)
- [Validate app package using validation rules](#validate-app-package-using-validation-rules)

### Validate using the app manifest schema
### Validate using the manifest schema

This option renders `appPackage/manifest.json` with environment variables, and then validates your app manifest with its schema.

Expand All @@ -136,7 +168,7 @@ Alternatively, use the following Microsoft 365 Agents Toolkit command line inter
atk validate --manifest-path <YOUR-PATH-TO-MANIFEST>
```

If you meet `MissingEnvironmentVariablesError`, it means that Agents Toolkit can't find corresponding environment variables defined in manifest.json. You may need to run **Provision** or select F5 to generate environment variables, or manually update `.env.xx` file to fulfill the value.
The `MissingEnvironmentVariablesError` error indicates that Agents Toolkit couldn't locate the required environment variables specified in `manifest.json`. You might need to run **Provision** or press **F5** to generate the environment variables. Alternatively, you can manually update the `.env.xx` file to set the required values.

:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/missing-env.png" alt-text="Screenshot shows the missing environment variables error.":::

Expand All @@ -156,7 +188,8 @@ It has other validation rules than the app manifest schema. For example, if stat

:::image type="content" source="../assets/images/toolkit-v2/customize app manifest/validation-output.png" alt-text="Screenshot shows the validation output." lightbox="../assets/images/toolkit-v2/customize app manifest/validation-output.png":::

## Update Teams app
<!--
## Update Teams agent or app

After you've previewed and validated the app manifest file, you can sync your local changes to Teams Developer Portal by triggering **Teams: Update Teams App** command from command palette.

Expand All @@ -173,11 +206,12 @@ atk update teams-app
> * The change is reflected in Developer Portal. Any manual updates in Developer Portal are overwritten.
> * To change the name of the published app, you must modify both the `local.manifest` and `manifest.json` files.

If the app manifest file is outdated due to configuration file change or template change, select any one of the following actions:
If the manifest file is outdated due to configuration file change or template change, select any one of the following actions:

* Preview only: Local app manifest file is overwritten according to current configuration.
* Preview and update: Local app manifest file is overwritten according to current configuration and also updated to Teams platform.
* Cancel: No action is taken.
* **Preview only**: Local app manifest file is overwritten according to current configuration.
* **Preview and update**: Local app manifest file is overwritten according to current configuration and also updated to Teams platform.
* **Cancel**: No action is taken.
-->

## To preview values for local and dev environment

Expand All @@ -198,9 +232,9 @@ To preview values for all the environments, you can hover over the placeholder.

## See also

* [Microsoft 365 Agents Toolkit Overview](agents-toolkit-fundamentals.md)
* [App manifest schema](/microsoft-365/extensibility/schema)
* [Developer Portal for Teams](../concepts/build-and-test/teams-developer-portal.md)
* [Manage multiple environments](TeamsFx-multi-env.md)
* [Public developer preview for Microsoft Teams](../resources/dev-preview/developer-preview-intro.md)
* [Provision cloud resources using Visual Studio Code](provision-cloud-resources.md)
- [Microsoft 365 Agents Toolkit Overview](agents-toolkit-fundamentals.md)
- [Microsoft 365 app manifest schema](/microsoft-365/extensibility/schema)
- [Developer Portal for Teams](../concepts/build-and-test/teams-developer-portal.md)
- [Manage multiple environments](TeamsFx-multi-env.md)
- [Public developer preview for Microsoft Teams](../resources/dev-preview/developer-preview-intro.md)
- [Provision cloud resources using Visual Studio Code](provision-cloud-resources.md)