home-assistant / home-assistant/iOS

Assist transcribes speech but never starts the pipeline; typed input works

Open
#5,396 0 comments 0 reactions 0 assignees View on GitHub
bug ios
Dominant language
Swift
Stars
2.4k
Forks
520
Avg merge
7h 27m
Merged PRs (30d)
264

Description

**iOS device model, version and app version**

Primary device:
- Model Name: iPhone 17 Pro Max
- Software Version: iOS 27.0 Public Beta
- App version: 2026.7.3 (2026.2546)

Second device:
- Model Name: iPhone 17 Pro
- Software Version: iOS 26.5.2
- App version: 2026.7.3 (2026.2546)

**Home Assistant Core Version**

2026.8.0 (Home Assistant OS 17.3, Frontend 20260729.5)

**Describe the bug**

In the native iOS Companion App Assist interface, spoken input is transcribed and the transcript becomes visible, but Assist then remains stuck and never submits the transcript to the selected Assist pipeline. The same prompt entered using the keyboard starts and completes the pipeline normally.

The issue reproduces on two different iPhones and on both iOS 27.0 Public Beta and stable iOS 26.5.2. On the second device, STT first had to be enabled in Assist using the gear/settings control. Once enabled, transcription worked, followed by the same hang.

The Home Assistant backend creates a pipeline run ID for the spoken attempt, but the pipeline debug trace contains no events at all: no `run-start`, STT event, intent event, conversation-agent call, or `run-end`. A typed attempt against the same pipeline produces `run-start`, intent events, and `run-end` normally.

Updating Home Assistant Core from 2026.5.4 to 2026.8.0 and updating the Companion App from 2026.7.1 to 2026.7.3 did not resolve the issue. Clearing the frontend cache and restarting the primary iPhone also did not resolve it.

**To Reproduce**

1. Open Assist in the native Home Assistant Companion App on iOS.
2. Select the configured Assist pipeline.
3. Ensure STT is enabled in the Assist settings.
4. Tap the microphone and say a harmless prompt such as `Zeg alleen TEST`.
5. Wait for the spoken text to be transcribed and displayed.
6. Observe that Assist remains stuck and no response appears.
7. Enter the same prompt using the keyboard.
8. Observe that the pipeline starts and returns a response normally.

**Expected behavior**

After transcription completes, the Companion App should submit the transcript to the selected Assist pipeline. The backend should emit `run-start`, process the conversation request, and finish with `run-end`.

**Screenshots**

Available locally and can be attached before submission:
- Assist showing the transcript and indefinite waiting state.
- Home Assistant version information showing Companion App 2026.7.3 (2026.2546) and Core 2026.8.0.
- Primary device About screen showing iPhone 17 Pro Max and iOS 27.0.

**Additional context**

Selected pipeline:
- Pipeline name: Gemini Nederlands (tekst)
- STT engine: Google AI STT
- STT language: nl-NL
- Conversation agent: Google AI Conversation

Backend correlation examples:
- Spoken attempt: pipeline run ID `01KZF0H2VA7WJNGQ55DC72EK9E`, 2026-08-07 23:02:09 CEST. The run exists, but its event list is empty.
- Typed attempts on the same pipeline emitted `run-start`, `intent-start`, `intent-end`, and `run-end`, and completed in approximately 1.2 seconds.

Direct backend tests of the same conversation agent and pipeline also completed successfully. This places the failure after native transcription but before the pipeline `run-start` boundary.

A Safari comparison over the local URL was inconclusive because the instance was accessed over plain HTTP on a local IP address; Safari could not use the web microphone in that non-secure context. The reported failure is specifically reproducible in the native Companion App.

No Home Assistant device-control command is required to reproduce the problem.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the issue in the native iOS Companion App Assist interface with STT enabled, then compare the spoken-input handoff after transcription with the working typed-input path. Use the pipeline debug trace to check whether spoken input reaches run-start. Done means the transcript is submitted to the selected pipeline and the trace completes through run-end.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.