Microsoft Graph PowerShell currently stores Graph SDK options at:
%USERPROFILE%\.mg\mg.graphoptions.json
The location is hard-coded in Microsoft.Graph.Authentication:
GraphDirectoryPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
".mg");
GraphOptionsFilePath is then constructed beneath that directory.
Source references in tag v2.36.1:
src/Authentication/Authentication.Core/Constants.cs
src/Authentication/Authentication/Constants.cs
src/Authentication/Authentication/Common/GraphSessionInitializer.cs
src/Authentication/Authentication/Cmdlets/SetMgGraphOption.cs
This creates another tool-specific dot-directory directly under the user profile, with no documented environment variable or configuration setting for relocating it.
Environment
OS: Windows
Microsoft.Graph.Authentication: 2.36.1
Current path: %USERPROFILE%\.mg\mg.graphoptions.json
The file contains SDK configuration options such as:
DisableWAMForMSGraph
DisableLoginByWAM
No authentication-token relocation is being requested in this issue; the immediate request concerns configuration files such as mg.graphoptions.json.
Expected behavior
Provide a supported way to relocate Microsoft Graph PowerShell configuration.
Possible approaches:
- Add an environment variable such as
MSGRAPH_CONFIG_DIR.
- Follow platform conventions by default:
- Windows:
%APPDATA%\Microsoft\GraphPowerShell
- Linux/macOS:
$XDG_CONFIG_HOME/microsoft-graph, falling back to ~/.config/microsoft-graph
- Preserve the existing
.mg location for backward compatibility and migrate or fall back to it when appropriate.
Motivation
A configurable location would:
- Avoid adding application-specific directories to the profile root.
- Support enterprise-managed and portable PowerShell environments.
- Improve separation between configuration, cache, authentication state, and user data.
- Allow consistent backup and profile-management policies.
- Better align with platform conventions and the XDG Base Directory specification.
Existing related issue
#747 — Consider moving graph cache from .graph to .cache/graph to match XDG specification remains open.
That issue addresses Graph cache placement. This request is narrower and complementary: it covers the hard-coded .mg configuration directory and mg.graphoptions.json.
Acceptance criteria
- A documented setting or environment variable controls the Graph PowerShell configuration directory.
Get-MgGraphOption and Set-MgGraphOption use the configured location.
- Existing
.mg configurations continue working through migration or backward-compatible fallback.
- Windows, Linux, and macOS path behavior is documented and tested.
- Configuration and cache locations can be controlled independently.
Microsoft Graph PowerShell currently stores Graph SDK options at:
The location is hard-coded in
Microsoft.Graph.Authentication:GraphOptionsFilePathis then constructed beneath that directory.Source references in tag
v2.36.1:src/Authentication/Authentication.Core/Constants.cssrc/Authentication/Authentication/Constants.cssrc/Authentication/Authentication/Common/GraphSessionInitializer.cssrc/Authentication/Authentication/Cmdlets/SetMgGraphOption.csThis creates another tool-specific dot-directory directly under the user profile, with no documented environment variable or configuration setting for relocating it.
Environment
The file contains SDK configuration options such as:
No authentication-token relocation is being requested in this issue; the immediate request concerns configuration files such as
mg.graphoptions.json.Expected behavior
Provide a supported way to relocate Microsoft Graph PowerShell configuration.
Possible approaches:
MSGRAPH_CONFIG_DIR.%APPDATA%\Microsoft\GraphPowerShell$XDG_CONFIG_HOME/microsoft-graph, falling back to~/.config/microsoft-graph.mglocation for backward compatibility and migrate or fall back to it when appropriate.Motivation
A configurable location would:
Existing related issue
#747 — Consider moving graph cache from
.graphto.cache/graphto match XDG specification remains open.That issue addresses Graph cache placement. This request is narrower and complementary: it covers the hard-coded
.mgconfiguration directory andmg.graphoptions.json.Acceptance criteria
Get-MgGraphOptionandSet-MgGraphOptionuse the configured location..mgconfigurations continue working through migration or backward-compatible fallback.