Depending on your criteria, you could always build the 'Choices' string for your Input.ChoiceSet element in Copilot Studio and dynamically pass it to the Adaptive Card JSON. Below is a quick example:
- Create a condition that checks the user's access level (I've used a simple 'Full' or 'Partial' access for the example, but feel free to update per your needs).
- Set a string variable ('AC_Choices' here) to emulate the data needed for the "choices" field for the AC element "Input.ChoiceSet"

Full Access String:
[{"title": "Option1", "value": "Option1"}, {"title": "Option2", "value": "Option2"}, {"title": "Option3", "value": "Option3"}]
Partial Access String (with Option 2 removed):
[{"title": "Option1", "value": "Option1"}, {"title": "Option3", "value": "Option3"}]
- Create an Adaptive Card node. In the properties, select the dropdown so that it shows 'Edit Formula'

Your code should look something like this:
{
type: "AdaptiveCard",
schema: "http://adaptivecards.io/schemas/adaptive-card.json",
version: "1.5",
body: [
{
type: "TextBlock",
text: "Options",
weight: "bolder",
size: "medium",
style: "heading",
wrap: true
},
{
type: "TextBlock",
text: "Please select your options",
isSubtle: true,
wrap: true
},
{
type: "Container",
items:
[
{
type: "Input.ChoiceSet",
style: "Expanded",
label: "Make your choice",
id: "myChoice",
choices: Topic.AC_Choices
}
]
}
],
actions: [
{
type: "Action.Submit",
title: "Submit"
}
]
}
Notice we are passing 'Topic.AC_Choices' in the 'choices' field of "Input.ChoiceSet".
Your AC should now show only the choices you have predetermined.