We're writing this on December 12, closing out the year's field notes the way we do every December: an honest accounting of what changed underneath the products our clients run, not a highlight reel. 2023 gave us more to account for than most years. GPT-4 shipped March 14. Two days later came the Microsoft 365 Copilot announcement, and Microsoft then spent the rest of the year proving that "announced" and "generally available" are not the same word — GA finally landed November 1, with a per-seat invoice attached. In between, Azure AD became Microsoft Entra ID, a nation-state actor forged authentication tokens using a stolen Microsoft signing key, a file-transfer product most of our clients had never heard of put several of their vendors in the news, and Microsoft closed out the year by admitting, in the careful language of a corporate initiative, that its own identity plumbing needed work.
None of that is trivia to us. Each of those threads changed what we recommend clients buy, what we tell them to lock down first, or which vendor-risk questions belong on a board agenda. This note says, plainly, what we did about each one and what we're still not finished with heading into January.
The short version: 2023 was the year AI moved from "interesting demo" to "line item with a governance requirement attached," and the year identity infrastructure — ours and Microsoft's — took real hits from people who don't announce their work eight months in advance.
GPT-4, Copilot, and the eight months between them
GPT-4's release in March mattered to us mostly because it made Azure OpenAI Service's January general availability retroactively more interesting — clients who had dismissed GPT-3.5-Turbo as a novelty came back asking what an in-tenant GPT-4 deployment would take. That is a different conversation than Copilot: Azure OpenAI Service is a platform decision, data stays in your tenant, is not used to train the base model, sits behind private endpoints and content filtering, and the buyer is usually an application team with a specific workload in mind.
Microsoft 365 Copilot is a different animal, and the stretch between the March 16 announcement and the November 1 GA was some of the most useful runway we have had in years, because Copilot's actual mechanism was public well before the product was purchasable. The Semantic Index reads whatever the signed-in user's existing permissions already allow, across SharePoint, OneDrive, and Exchange. That is not a new risk so much as an old one — years of oversharing, stale group memberships, and "anyone with the link" sharing — getting a much better search engine pointed at it.
We spent that runway the way we spend most gaps between announcement and shipping: running readiness reviews instead of waiting for the invoice. A 4,000-seat healthcare group asked us to scope Copilot before finance had even approved a pilot budget. The review turned up the same pattern we saw at several other clients this year — SharePoint sites still shared "anyone with the link" from as far back as 2019, guest accounts nobody remembered inviting, and a sensitivity-label taxonomy that existed on paper but had never been applied to a single production library. None of that required Copilot to be a problem. Copilot just meant it would surface faster, to more people, in an answer that looks authoritative.
The Entra rename that cost us a find-and-replace pass
Azure AD became Microsoft Entra ID on July 11, and the honest technical answer to "what changed" is: nothing. Same tenant, same Conditional Access engine, same sign-in logs, same underlying directory. What cost us real hours was documentation — SOWs, architecture diagrams, runbooks, and knowledge-base articles that all said "Azure AD" and needed a pass so whoever is on call in six months isn't confused by a stale screenshot. Alongside the rename, Microsoft kept pushing tenants off the old AzureAD and MSOnline PowerShell modules toward the Microsoft Graph PowerShell SDK — the change that actually costs someone a weekend of rewriting scripts.
The rename was not only a label change on one product. Entra is now the umbrella for a family that includes Permissions Management, Verified ID, Workload ID, and previews of Internet Access and Private Access — Microsoft consolidating identity, permissions, and network governance under one brand it intends to sell as one story. Worth tracking, even though it hasn't changed a single Conditional Access policy we manage today.
Storm-0558 and MOVEit taught the same lesson twice
Two of the year's ugliest stories look unrelated on the surface. Storm-0558, disclosed in mid-July, was a Chinese state actor forging authentication tokens with a stolen Microsoft signing key, reading mail through Exchange Online and OWA at roughly two dozen organizations, including US government agencies. MOVEit, cracked open by CVE-2023-34362 in late May, was Cl0p mass-exploiting a file-transfer product, eventually touching hundreds of organizations through the summer and fall.
Underneath, they are the same story: a trust boundary nobody had actually drawn. Storm-0558 worked because a signing key with a narrower intended scope validated far more broadly than it should have. MOVEit worked because a vendor's file-transfer appliance carried more database access and more implicit trust than anyone reviewing it from outside would have guessed. Not one of our clients ran MOVEit directly — they were exposed because a payroll processor or a benefits vendor did, exactly the shape of risk a network diagram never shows you.
The detail from Storm-0558 that changed how we advise clients: the logging that would have caught the mailbox access as it happened, MailItemsAccessed in the unified audit log, sat behind an E5 or Advanced Audit add-on license for most tenants. Microsoft later said it would make that logging free for everyone — the right call, and no help to anyone who couldn't see the access while it happened. We now check mailbox audit status as a standing item on every engagement, not an afterthought:
Get-Mailbox -ResultSize Unlimited |
Where-Object { $_.AuditEnabled -eq $false } |
Select-Object DisplayName, PrimarySmtpAddress, AuditEnabled
If that returns rows in your tenant, you are carrying the same blind spot roughly two dozen Storm-0558 victims had.
What we actually got funded on this year
Every proposal we wrote this year competed with a Copilot demo someone in the room had already seen. That is not a complaint — it was a useful forcing function. It got clients to fund work that had been "someday" for two years or more:
| Engagement theme | What actually shipped | Who owned it afterward |
|---|---|---|
| Copilot readiness | Oversharing review, guest cleanup, sensitivity labels applied to real libraries | Collaboration and Security, jointly |
| Phishing-resistant MFA | Authentication strength policies, FIDO2 for privileged roles, certificate-based auth for a client that couldn't issue hardware keys | Identity |
| Azure OpenAI Service landing | Private endpoints, content filtering, an approved-use policy that did more than say no | Architecture |
| Entra hardening | PIM for standing Global Admin roles, break-glass accounts tested for real, not assumed to work | Identity and SecOps |
None of that required AI to be good or bad. It required someone to fund permissions hygiene, privileged-access discipline, and logging that had sat on a backlog since before GPT-4 existed. The AI headlines just made the invoice easier to sign. This work sits on the same foundation that has paid our bills for well over a decade — hybrid identity that survives a cutover, desktop delivery that survives an audit, mail platforms that migrate without losing a message. The tools change; a misconfigured trust boundary is still a misconfigured trust boundary whether the headline says "AI" or "ransomware."
The identity governance debt nobody budgeted for
Here is what we did not finish, and neither did most of our clients. Oversharing reviews that started in spring, ahead of the Copilot announcement, still weren't complete by the November 1 GA — meaning the first production Copilot answers at more than one client surfaced content somebody had forgotten was ever shared. Conditional Access exceptions meant to be temporary in March were still active in December, unreviewed. Admin accounts stayed exempt from the same phishing-resistant MFA policy everyone else had to use, because "the break-glass process needs it," a justification that stopped being true around midyear.
Report-only Conditional Access policies are the clearest symptom we keep tripping over. We still find tenants running authentication strength pilots in report-only mode months after the pilot wrapped, because nobody set a date for when report-only converts to enforced:
Get-MgIdentityConditionalAccessPolicy |
Where-Object { $_.State -eq "enabledForReportingButNotEnforced" } |
Select-Object DisplayName, State, CreatedDateTime
Microsoft's Secure Future Initiative, announced November 2 in the direct aftermath of Storm-0558, targets exactly this kind of gap on Microsoft's own side of the line — faster patching, default-secure configurations, hardening the identity systems that issue and validate tokens in the first place. We think it's a genuine response to a genuine problem. We also think it changes nothing about whose job it still is to review guest access, expire exceptions, or convert report-only policies to enforced. Shared responsibility didn't get any less shared because Microsoft published an initiative page.
Into 2024
We are closing the year with more scoped, funded work on the calendar than at any point since the remote-work scramble of 2020 and 2021, and with a shorter "someday" list than we started 2023 with — the actual measure of a good year, not the size of the AI line item. What carries forward: Copilot is now generally available, so readiness work that was optional in October becomes visible the first time someone asks it a question their access should never have answered. Phishing-resistant MFA is no longer a pilot conversation for most of our client base; it's a rollout with a deadline attached. Vendor and third-party risk reviews are getting board-level attention for the first time in years, on the strength of one file-transfer product's very bad summer. And we're watching the Secure Future Initiative for what it actually changes operationally, not what it promises in a press release, before it changes a single recommendation we make to a client.
None of that is dramatic. It is the unglamorous, necessary follow-through that this year's louder stories kept making urgent.
If you're facing this
If your Copilot licenses shipped before your permissions review finished, or you are still running report-only Conditional Access policies from a pilot nobody formally closed out, you are not behind anyone worth worrying about — most of the tenants we looked at this year were in the same position. Start with an honest inventory of what is already shared, who still holds standing admin access, and which exceptions never got an expiry date. Bring us the estate as it actually runs, not the architecture diagram, and we will help you build the priority list from there.