Graph-first PowerShell assistant for Microsoft 365 helpdesk work: natural language → AI-planned discovery → solution one-liner (or bulk Graph $batch job) → /run with write warning + typed EXECUTE + local audit trail.
Version: see HD365.psd1 / VERSIONING.md · Repo: github.com/PhillyOC/HD365
# From a release zip, or clone:
.\Install-HD365.ps1
# Defaults: ai.provider = CopilotChat (needs M365 Copilot license)
.\Start-HD365.ps1Product install: download HD365-Desktop-Setup-*.exe (or HD365-Desktop-*.msi) from Releases. Desktop Setup is the supported install path.
A branded Tauri + React/TypeScript desktop GUI lives in app/ and talks to this same
PowerShell engine over a local JSON-RPC bridge (Bridge-HD365.ps1) - no engine logic is
duplicated. It's under active development; the console (Start-HD365.ps1) remains the primary,
fully-supported way to run HD365 today. To try the desktop app in dev mode:
cd app
npm install
npm run tauri devIn-session:
HD365:Ready> /ai
HD365:Ready> create security groups for every Mexican state, nest Accounts Payable under each
Automatic flow:
- Discovery — AI returns a read-only one-liner; host runs it immediately
- Solution — AI returns a filled one-liner and/or
job.createsfor bulk /run— executes (writes require typingEXECUTE)
Geography / taxonomy is AI-driven (any country/region/custom names). The host does not hardcode US state catalogs for planning.
| Phase | Graph scopes | Behavior |
|---|---|---|
| Discovery | Read / least + Copilot scopes when using CopilotChat | Auto-runs; write cmdlets blocked |
| Solution | — | Review / edit / copy one-liner (real data baked in) |
| Execute | Write catalog if needed | Warning + typed EXECUTE before writes |
Audit:
%LOCALAPPDATA%\HD365\audit\hd365-audit-YYYY-MM-DD.jsonl%LOCALAPPDATA%\HD365\audit\hd365-writes.jsonl(writes only)- Scripts:
%LOCALAPPDATA%\HD365\scripts\
/help /ai /status /auth read|write /exo /run (/r) /edit /copy /cancel /audit /quit
Configured in %LOCALAPPDATA%\HD365\settings.json (ai.provider + ai.providers.*). Type /ai in-session for an interactive status + switcher (includes a Copilot Chat API create-conversation probe), or jump straight to one with /ai <Name>:
| Provider | Notes |
|---|---|
| CopilotChat (default) | Microsoft 365 Copilot Chat API via Graph beta (POST /beta/copilot/conversations) |
| AzureOpenAI | Set endpoint + deployment + HD365_AZURE_OPENAI_KEY |
| OpenAI | Set HD365_OPENAI_KEY |
| Anthropic | Claude; set HD365_ANTHROPIC_KEY |
| Gemini | Google Gemini; set HD365_GEMINI_KEY |
| Together | Together AI (OpenAI-compatible); set HD365_TOGETHER_KEY |
| Mistral | Mistral AI (OpenAI-compatible); set HD365_MISTRAL_KEY |
| Ollama | Local models via ollama serve; no API key |
Complex natural language requires AI (allowOfflineFallback defaults to false).
- The Windows/desktop Copilot app is not HD365’s backend. HD365 uses the Microsoft 365 Copilot Chat API on Graph.
- That API needs a work/school account with a Microsoft 365 Copilot add-on license. Personal/home Graph sign-in can succeed (
/auth readOK) while Chat API still returns 401/403/500. - Validate on a work laptop/tenant:
/auth read→/ai(expectCopilotApi = OK) → then natural-language requests.
When the AI returns job.creates, HD365 uses Graph $batch (20/request), parents first, optional nest membership. Prefer this for large matrices instead of megabyte one-liners.
Read/write catalogs live in Config\scopes.json (includes Copilot Chat scopes). Proposals advertise least scopes for the task; CopilotChat keeps Chat API scopes on the session so planning does not re-consent every phase.
For a full Entra app registration walkthrough (public client, device-code, admin consent, Read/Write scopes), see docs/HANDOFF.md § F, or run:
.\Tools\Show-HD365EntraAppSetup.ps1- Microsoft Graph PowerShell SDK
- ExchangeOnlineManagement (classic DLs)
- ActiveDirectory RSAT when present
- Azure CLI when
azis on PATH
Activate PIM roles in Entra as needed (e.g. Groups Administrator). HD365 documents suggested roles; it does not activate PIM for you yet.
Coding agents (Claude Code, Cursor, etc.) should start with:
| Doc | Purpose |
|---|---|
CLAUDE.md |
Always-on operating rules (layering, StrictMode helpers, firewall) |
docs/HANDOFF.md |
Full architecture, data paths, Entra guide, enterprise vision, handoff checklist |
SYNC.md |
Pro (GitHub) vs work (CopilotChat-only export) ethical firewall |