Skip to content

v1.14.2 — Copilot CLI sign-in, and failures that explain themselves

Choose a tag to compare

@Criptic Criptic released this 11 Sep 06:49
· 77 commits to main since this release
2ed136a

A patch release driven by three field reports. One fixes interactive sign-in from GitHub Copilot CLI; the other two fix failures that happened for a real reason while the output said nothing useful about it.

Highlights

🔐 GitHub Copilot CLI can sign in (#58)

copilot mcp auth failed before SAS Viya was ever contacted, with Redirect URI 'http://127.0.0.1:<port>/' does not match CIMD redirect_uris. An MCP client opens a fresh loopback port for every sign-in, and FastMCP 4.0 enables CIMD (Client ID Metadata Document) by default: a client whose client_id is an HTTPS URL — Copilot CLI is one — has its callback checked against the fixed redirect URIs in its own published document, with no exemption for a varying loopback port. The server now sets enable_cimd=False, which puts those clients on the ordinary dynamic-registration path every other MCP client already uses, and which does let loopback ports vary (RFC 8252 §7.3).

The trade, stated plainly: the server no longer advertises client_id_metadata_document_supported, and private_key_jwt drops out of the advertised token-endpoint auth methods. Both are accurate — with CIMD off it supports neither.

🧾 execute_sas_code says why a job failed (#59, fixes #55)

A refused job submission surfaced as Error calling tool 'execute_sas_code': 'id' — a KeyError leaking out, because the submit never checked its HTTP status and parsed Viya's error body as though it were a job. Viya's actual reason was thrown away, so a model driving the tool retried simpler and simpler SAS code against a failure that had nothing to do with the code. It now reports what Viya said.

The same sweep found two quieter defects in the same path:

  • A log that could not be read came back as an empty log rather than an error — for audit-style work, silently losing the deliverable.
  • A compute session dying mid-job left the tool polling forever, every two seconds, because the error body was read as a job state that was never terminal. Deliberately no wall-clock cap was added alongside the fix: legitimate SAS jobs can run for hours.

🗄️ A caslib 409 points at the data source, not your permissions (#59, fixes #56)

casManagement answers a caslib read with HTTP 409 when CAS cannot connect to the library's underlying data source — verified against postgres (password authentication failed) and Oracle (ORA-00257: archiver error) caslibs, both arriving as the same 409. On its own the status reads as an authorization problem, so the natural next step is to check caslib permissions, find them correct, and be stuck. list_castables, list_source_tables, get_castable_info and get_castable_columns now keep Viya's own reason and add what it means, with the one step that settles it independently of MCP: confirm the caslib opens directly in SAS Viya.

🔢 Tool count

91 tools (50 read-only, 21 destructive) — unchanged from v1.14.1. This release changes error handling and authentication configuration only.

🐳 Container image

ghcr.io/sassoftware/sas-mcp-server:1.14.2

Also published as 1.14, 1 and latest. Helm chart 0.2.6 (appVersion 1.14.2).

📄 Details

Thanks to @bteleuca for diagnosing and fixing the Copilot CLI sign-in (#58), and to @nishah2005 for the reports behind #55 and #56.