-
Notifications
You must be signed in to change notification settings - Fork 49
Description
Summary
WorkIQ fails with CopilotConversation400Error for all users whose Windows timezone is FLE Standard Time (Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius). The bundled .NET 10 runtime maps this to the IANA name Europe/Kyiv, which the Microsoft Graph Copilot Chat API rejects as invalid.
This is the same root cause as #54 (closed without a product fix). That issue affected a user in Bulgaria; investigation confirms it affects the entire FLE Standard Time timezone covering 6 European capitals. The workaround of changing the Windows timezone is disruptive and should not be the permanent solution.
Environment
- WorkIQ version: 0.4.0.16790
- OS: Windows 11 (Build 26200)
- Node.js: v20.11.0
- .NET runtime (bundled): 10.0.3
- Windows timezone:
FLE Standard Time— (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius
Steps to Reproduce
- Set Windows timezone to
FLE Standard Time:Set-TimeZone -Id "FLE Standard Time"
- Run any WorkIQ query:
workiq ask -q "hello" - Observe error:
Error: Unexpected error: Exception of type 'ApiSdk.Models.CopilotConversation400Error' was thrown.
Root Cause (HTTP traffic capture)
Captured via mitmproxy. WorkIQ successfully creates a conversation (POST /beta/copilot/conversations → 201), then sends:
POST /beta/copilot/conversations/{id}/chat{
"contextualResources": { "files": [], "webContext": { "isWebEnabled": false } },
"locationHint": { "timeZone": "Europe/Kyiv" },
"message": { "text": "hello" }
}The API responds 400 Bad Request:
{
"error": {
"code": "badRequest",
"message": "The timeZone field within locationHint is not in correct IANA format."
}
}Europe/Kyiv is a valid IANA timezone name (canonical since IANA tzdb 2022b, replacing Europe/Kiev). The .NET 10 runtime uses updated ICU data that correctly maps FLE Standard Time → Europe/Kyiv. However, the Copilot Chat API backend has stale timezone data and only recognizes the deprecated name Europe/Kiev.
Impact
- Affects all users in Helsinki, Kyiv, Riga, Sofia, Tallinn, and Vilnius timezones
- Both CLI (
workiq ask) and MCP server (workiq mcp) are broken - The error message gives zero indication of a timezone issue — extremely difficult to diagnose without HTTP traffic capture
- At least 3 users have independently hit this (Unexpected error: Exception of type 'ApiSdk.Models.CopilotConversation400Error' was thrown #54, a Microsoft employee in Unexpected error: Exception of type 'ApiSdk.Models.CopilotConversation400Error' was thrown #54 comments, and this report)
Workaround
Change Windows timezone to GTB Standard Time (Athens, Bucharest) — same UTC+2 offset and EU DST rules:
Set-TimeZone -Id "GTB Standard Time"Suggested Fix
WorkIQ should normalize timezone names before sending them to the API. The CLDR/ICU backward compatibility file maps modern names to their legacy equivalents. At minimum:
| Modern IANA name | Legacy name (API-compatible) |
|---|---|
Europe/Kyiv |
Europe/Kiev |
Asia/Ho_Chi_Minh |
Asia/Saigon |
Asia/Kolkata |
Asia/Calcutta |
Pacific/Pohnpei |
Pacific/Ponape |
This is a one-line fix in the timezone resolution code — check if the resolved IANA name has a backward-compatible alias and prefer that when calling the Copilot API.
Additionally, the Copilot Chat API team should update their timezone validation to accept current IANA canonical names.