# Reported issues for revit-model-mcp

Pod holds 13 of 13 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [revit-model-mcp](/mcp/revit-model-mcp).

## Most discussed

### HTTP host: graceful shutdown, stored-response budget and request read deadline

## Context

The HTTP host in the add-in (`docs/transport.md`, "HTTP configuration") has known robustness gaps. #64 moves HTTP jobs onto the shared job queue (`POST /jobs` enqueues, `GET /jobs/{id}`, `POST /jobs/{id}/cancel`), so this work should start from `main` after #64 is merged.

- Listener tasks are detached and the cancellation source is not disposed, so shutdown can race in-flight handlers.
- Completed responses expire by time only; there is no byte or count budget, so a chatty client…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/25) · 2026-09-14 · open · 2 comments

### Live validation of reads and actions on Revit 2022–2025 and 2027

## Context

`docs/validation.md` shows live reads and actions validated only on Revit 2026.4. Revit 2022–2025 and 2027 have build evidence only: the add-in compiles against each API, but nobody has opened a model and called the tools there. Users on those years cannot tell whether "supported" means "tested".

## Proposal

Run the existing live checklist on each remaining year and record the result in the validation table.

For one year:

1. Install the release MSI for that year, open Autodesk's…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/23) · 2026-09-14 · open · 2 comments

### HTTP transport listener does not bind on 53110 in Revit despite httpEnabled

## Context

Live test on Revit 2026.4 (Windows), Revit Model MCP 0.5.0 add-in installed. The add-in loads and works over the file channel (a `ping` job returns `{"command":"ping","success":true,"data":"pong"}`), and the instance heartbeat updates. But the HTTP transport listener never binds.

## Observed

- `%LOCALAPPDATA%\RevitModelMcp\settings.json`: `{"httpEnabled":true,"httpBind":"127.0.0.1","httpPort":53110,...}`
- `Get-NetTCPConnection -LocalPort 53110 -State Listen` returns 0…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/44) · 2026-09-14 · closed · 1 comment

### Design: unattended execution policy for actions

## Context

Actions are gated by `REVIT_MCP_ALLOW_WRITE=1` and the workstation `allow-write` file, and every mutating action supports `dry_run` and returns `verification`. What does not exist yet is a policy for unattended use: once both gates are on, any prompt can mutate the model without a per-action confirmation.

## Discussion needed

Before implementation, agree on the model. Options on the table:

1. **Confirmation tokens.** A mutating call without a token returns a preview plus a…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/26) · 2026-09-14 · open · 1 comment

### MultiUser MSI grants HTTP URL ACL only to the installing user's SID

## Severity: P1 (installer — HTTP unusable for other users of a per-machine install)

The MultiUser (per-machine) MSI grants the HTTP prefix listen right only to the **installing** user's `[UserSID]`.

**Repro:** an admin installs the per-machine package; a different user launches Revit — the add-in is installed but its `HttpListener.Start()` does not get the required URL ACL, so HTTP transport is unavailable for that user.

**Code:** `build/install/Installer.cs:31`, `:73`.

**Fix direction:**…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/57) · 2026-09-16 · open · 0 comments

### PowerShell discovery output not forced to UTF-8; non-ASCII model names corrupted

## Severity: P1 (encoding — discovery fails for non-ASCII model names)

JSON discovery is emitted via Windows PowerShell without forcing UTF-8 output, but Python decodes stdout as UTF-8 (errors replaced) unconditionally.

**Impact:** on Windows with a non-UTF-8 console code page, Cyrillic (and other non-ASCII) `documentTitle`/`documentPath` are corrupted, so discovery filtering by the original model name stops matching. The base64 protection used for normal responses does not cover this path.…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/56) · 2026-09-16 · open · 0 comments

### Query parameter filters on output-field names throw KeyNotFoundException

## Severity: P1 (crash — valid input throws)

Parameter names that collide with result output fields are removed from the resolver, then indexed unconditionally in the dictionary, raising `KeyNotFoundException` instead of filtering.

**Repro:** `parameterFilters=[{"parameter":"Level","operator":"exists"}]`, or any filter on `Name` — passes the parser but throws instead of filtering.

**Code:** `src/RevitModelMcp.Addin/Capture/QueryParameterResolver.cs:30`,…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/55) · 2026-09-16 · open · 0 comments

### Cleanup failure overwrites an already-received (committed) action result

## Severity: P1 (data safety — lost action result / possible double-apply)

A cleanup error (e.g. SSH drop while deleting temp files) overwrites an already-received successful response, including a committed action's result.

**Repro:** a `move`/`place-family` commits successfully, then the SSH connection breaks during temp-file cleanup. The client receives only the cleanup error, loses the post-commit verification and success info, and a retry may apply the action again.

**Code:**…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/54) · 2026-09-16 · open · 0 comments

## Most recent

### view-elements/list-views intermediate responses still accepted as terminal after #45

## Severity: P1 (correctness — regression window after #45)

#45 fixed the "accepted and running" placeholder for most reads, but `view-elements` and `list-views` intermediate responses are still treated as terminal on the Local/SSH path.

Polling can land on `Processing is waiting…` or `Processed N…`: the call returns under-read data and deletes the response file while the add-in is still working; when `elapsedMs=0` a spurious error is possible.

**Code:**…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/53) · 2026-09-16 · open · 0 comments

### Write actions execute against the active document, not the addressed one

## Severity: P0 (data safety — wrong-document mutation)

A queued write action records the target **PID** but not the target **document**, and the executor operates on the current `ActiveUIDocument` at the time the `ExternalEvent` fires — not the document the action was addressed to.

**Repro (single Revit, no multi-instance needed):**
1. Open models A and B in one Revit.
2. With A active, submit a write action (e.g. `move`/`delete`) addressed at A, referencing an `ElementId` that also exists…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/51) · 2026-09-16 · closed · 0 comments

### Multi-instance on one machine: fixed HTTP port 53110 + shared file channel collide

## Summary

When two or more Revit instances on the **same Windows user** each load the add-in, they collide on shared, machine-wide resources. This is not destructive to Revit or the model, but it breaks the MCP channel for all-but-one instance and — with actions enabled — creates a wrong-instance targeting risk.

Observed in the wild: a second Revit started while the first held the HTTP port; the second instance's verify failed. (The reported `503` is most likely **http.sys returning 503 for…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/50) · 2026-09-16 · closed · 0 comments

### Report skipped fields from every best-effort reader

## Context

`revit_model_health` reports `skipped` and `revit_links_status` reports per-link `error`, but other best-effort readers still swallow parameter and geometry failures silently. A response can look complete while a category was skipped.

## Proposal

Every reader returns the same diagnostic shape: `skipped: [{ "what": "...", "reason": "..." }]` at the top level of the result, and logs the cause at debug level. Empty `skipped` means the read was complete.

## Acceptance criteria

- All…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/28) · 2026-09-14 · open · 0 comments

### revit_set_parameter: explicit parameter ids and no implicit type fallback

## Context

`revit_set_parameter` resolves parameters by name. Revit allows several parameters with the same name on one element (instance and type, shared and built-in), and the current implementation picks one and falls back on type coercion implicitly. A user cannot tell which parameter was written.

## Proposal

- Accept an optional `parameterId` (BuiltInParameter name, shared GUID or ElementId) alongside `name`.
- When `name` is ambiguous, refuse with a list of candidates (id, storage…

[Read the thread](https://github.com/sharafutdinovdi/revit-model-mcp/issues/27) · 2026-09-14 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/sharafutdinovdi/revit-model-mcp/issues).
