Background: the Managed Metadata Service and TaxonomyHiddenList

SharePoint 2010 introduced the Managed Metadata Service as a way to define a centralised, hierarchical taxonomy of terms that could be reused across site collections. Instead of every site re-creating its own dropdown choices, an information-architecture team could maintain a global term store and let lists and document libraries reference it through a Managed Metadata column. It was a real step up for enterprise content management, especially for organisations standardising on terms across regions, departments, or product lines.

What’s not obvious from the outside is that every site collection that consumes terms from the Managed Metadata Service also gets a hidden list called TaxonomyHiddenList. SharePoint uses it as a local cache of the term IDs and labels referenced from that site, mainly so taxonomy lookups don’t have to round-trip to the central term store every time a list item is rendered or saved. When you save an item with a managed metadata value, SharePoint writes a small entry into that hidden list — and that’s where the access check happens.

By default TaxonomyHiddenList inherits permissions from the site, which sounds fine, but in practice non-admin users often lack the level of permission needed to write entries into it. The result is the exact symptom in this post: read access works (so the term picker can resolve labels and synonyms), but as soon as you save and SharePoint tries to write the cache entry, you hit “Access Denied”.

The fix (originally)

Within my SharePoint 2010 environment, I have created my own Managed Metadata Service including a specific term hierarchy. After doing so, I wanted to use these terms as a managed metadata column in a custom list. I was able to create new list items leaving the newly created metadata field empty. But, as soon as I started typing in the metadata field, the system prompted me with appropriate synonyms of the matching terms. However, when I tried to save the new item, I got an error message saying “Access Denied”.

After a little bit of research I was able to solve this issue. Here is what I did:

- open up the URL https://<your_site_url>/Lists/TaxonomyHiddenList/

- under “List Tools” click on the “List” tab and select “List Permissions” from the ribbon

- add your “Users” group and provide “Contribute” permissions

After changing the list permissions I was able to create new items in the custom list with terms assigned from the Managed Metadata Service.

Looking back

SharePoint 2010 itself reached end of extended support in April 2021, so anyone running this version today is on borrowed time and should already be planning a migration. The good news is that the Managed Metadata Service concept survived intact: SharePoint Online and Microsoft 365 still ship a term store, still let you define hierarchies and synonyms, and still make those terms available as columns in lists and libraries. What’s changed is the plumbing — the hidden-list permission edge case described here doesn’t apply to SharePoint Online in the same way, and modern UI flows for tagging documents (including in Microsoft Viva and SharePoint syntex) bypass most of the legacy taxonomy machinery.

If you’re still maintaining a SharePoint 2010 farm and hit this exact symptom, the workaround above is the one. If you’re planning the move to SharePoint Online, this is one of the small classes of issues that simply goes away once you migrate, which is one more small reason to do it sooner rather than later.