diff --git a/index.d.ts b/index.d.ts
index dd799e1..99995f0 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -100,7 +100,7 @@ export interface OpenAICompatibilityPayload {
 }
 
 export interface CopilotMessage {
-  role: string;
+  role: MessageRole;
   content: string;
   copilot_references?: MessageCopilotReference[];
   copilot_confirmations?: MessageCopilotConfirmation[];
@@ -116,7 +116,8 @@ export interface CopilotMessage {
   [key: string]: unknown;
 }
 
-export interface InteropMessage<TRole extends string = string> {
+export type MessageRole = 'system' | 'user' | 'assistant';
+export interface InteropMessage<TRole extends MessageRole = MessageRole> {
   role: TRole;
   content: string;
   name?: string;
diff --git a/index.test-d.ts b/index.test-d.ts
index d57ca79..52a5b3a 100644
--- a/index.test-d.ts
+++ b/index.test-d.ts
@@ -168,7 +168,7 @@ export function transformPayloadForOpenAICompatibilityTest(
   expectType<{
     messages: {
       content: string;
-      role: string;
+      role: 'system' | 'user' | 'assistant';
       name?: string;
       [key: string]: unknown;
     }[];