<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce" -->

---
title: Introducing symfony lsp:check: Symfony-Aware Diagnostics...
description: Symfony Language Tools now ships a new symfony lsp:check command that runs the same Symfony-aware diagnostics used in editor integrations directly from the...
canonical: https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Introducing symfony lsp:check: Symfony-Aware Diagnostics in Your CI (Symfony Blog) | daily.dev
og:description: Symfony Language Tools now ships a new symfony lsp:check command that runs the same Symfony-aware diagnostics used in editor integrations directly from the...
og:url: https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce
og:image: https://api.daily.dev/og/posts/CHNyBSuCe.png
og:image:alt: Introducing symfony lsp:check: Symfony-Aware Diagnostics in Your CI (Symfony Blog)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Introducing symfony lsp:check: Symfony-Aware Diagnostics in Your CI (Symfony Blog)

**[Symfony](https://daily.dev/sources/symfony)** · 6 min read · 1 upvotes · 1 comments

## Summary

Symfony Language Tools now ships a new symfony lsp:check command that runs the same Symfony-aware diagnostics used in editor integrations directly from the command line and in CI. It catches mistakes that pass type checks but break at runtime, such as typoed route names, missing templates, and missing translation keys, by booting the application and checking routes, services, bundle configuration, Twig, Messenger, security firewalls, and more across 30 diagnostic codes. It supports JSON, GitHub Actions, and SARIF output formats, exit codes distinguishing findings from failures, baselines for gradual adoption, and a source-only mode for restricted environments. The command is also positioned as a validation step for coding agents, letting them self-check generated code before human review.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://symfony.com/blog/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci>

## Questions this post answers

### What does the symfony lsp:check command do in Symfony?

It runs a headless version of the Symfony-aware diagnostics used in editor integrations from the command line or in CI, checking for 30 categories of issues such as unknown routes, missing templates, missing translation keys, invalid bundle configuration, and unknown services. It requires Symfony CLI 5.20.0 or newer, or the standalone symfony-lsp binary from GitHub Releases.

_Teams wiring Symfony-specific checks into CI can track releases like this one on daily.dev._

### How can I add Symfony diagnostics checks to a GitHub Actions workflow?

Install the Symfony CLI in the workflow, run composer install, then execute symfony lsp:check --format=github, which emits GitHub-native workflow annotations directly on the offending files and lines. Other supported formats include JSON and SARIF 2.1, the latter uploadable to code-scanning systems with stable fingerprints for tracking findings across runs.

_Developers automating Symfony quality gates can follow tooling changes like this via daily.dev._

### What exit codes does the symfony lsp:check command return?

Exit code 0 means analysis completed with no blocking diagnostics, 10 means blocking diagnostics were found, 11 means invalid invocation, configuration, or baseline, and 12 means analysis is incomplete due to indexing, timeout, process, or internal failure. A failing provider still returns a partial report but forces exit code 12 so CI does not treat it as clean.

_Engineers scripting CI failure policies around specific tools can keep tabs on details like this using daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@leonidbugaev** · 0 upvotes

> A typoed route name still type-checks. I've shipped that: phpstan green, then a 404. Putting the same diagnostics in CI means an agent can't treat "tests passed" as done when the Twig template is missing.

## Similar posts on daily.dev

- [Announcing Symfony Language Tools, the Official Symfony LSP Server \(Symfony Blog\)](https://daily.dev/posts/announcing-symfony-language-tools-the-official-symfony-lsp-server-symfony-blog--ni87i9xqz) · Symfony · 4 upvotes · 0 comments
- [Symfony Language Tools: A Busy First Week \(Symfony Blog\)](https://daily.dev/posts/symfony-language-tools-a-busy-first-week-symfony-blog--jqgbj70ou) · Symfony · 7 upvotes · 1 comments
- [Symfony Insight Adds 11 New Rules \(Symfony Blog\)](https://daily.dev/posts/symfony-insight-adds-11-new-rules-symfony-blog--ufxltew0a) · Symfony · 7 upvotes · 0 comments
- [A Week of Symfony \#1027 \(August 31 – September 6, 2026\) \(Symfony Blog\)](https://daily.dev/posts/a-week-of-symfony-1027-august-31-september-6-2026-symfony-blog--f3nhcayim) · Symfony · 0 upvotes · 0 comments

---

Tags: [#testing](https://daily.dev/tags/testing), [#cicd](https://daily.dev/tags/cicd), [#php](https://daily.dev/tags/php), [#symfony](https://daily.dev/tags/symfony)

[View this post on daily.dev](https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Introducing symfony lsp:check: Symfony-Aware Diagnostics in Your CI (Symfony Blog)","url":"https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce"},"datePublished":"2026-08-31T12:15:06.849Z","dateModified":"2026-09-14T08:22:57.336Z","description":"Symfony Language Tools now ships a new symfony lsp:check command that runs the same Symfony-aware diagnostics used in editor integrations directly from the...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/327b244859fddae8f3a20d0225898aa0?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/327b244859fddae8f3a20d0225898aa0?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Symfony","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Symfony","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/cc07051b7112472f9729e73c14660a64","url":"https://daily.dev/sources/symfony"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"testing,cicd,php,symfony","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Symfony","item":"https://daily.dev/sources/symfony"},{"@type":"ListItem","position":3,"name":"Introducing symfony lsp:check: Symfony-Aware Diagnostics in Your CI (Symfony Blog)"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce","comment":[{"@type":"Comment","text":"A typoed route name still type-checks. I’ve shipped that: phpstan green, then a 404. Putting the same diagnostics in CI means an agent can’t treat “tests passed” as done when the Twig template is missing.","datePublished":"2026-08-31T14:58:54.173Z","url":"https://daily.dev/posts/CHNyBSuCe#c-T2uwGdvQB","author":{"@type":"Person","name":"Leonid Bugaev","url":"https://daily.dev/leonidbugaev","image":"https://lh3.googleusercontent.com/a/ACg8ocLhMgurwTmJElWaH9A8Ju8cHvZxgMCDt009jEYkmFCyUGAoaGSw=s96-c"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/introducing-symfony-lsp-check-symfony-aware-diagnostics-in-your-ci-symfony-blog--chnybsuce#faq","mainEntity":[{"@type":"Question","name":"What does the symfony lsp:check command do in Symfony?","acceptedAnswer":{"@type":"Answer","text":"It runs a headless version of the Symfony-aware diagnostics used in editor integrations from the command line or in CI, checking for 30 categories of issues such as unknown routes, missing templates, missing translation keys, invalid bundle configuration, and unknown services. It requires Symfony CLI 5.20.0 or newer, or the standalone symfony-lsp binary from GitHub Releases. Teams wiring Symfony-specific checks into CI can track releases like this one on daily.dev."}},{"@type":"Question","name":"How can I add Symfony diagnostics checks to a GitHub Actions workflow?","acceptedAnswer":{"@type":"Answer","text":"Install the Symfony CLI in the workflow, run composer install, then execute symfony lsp:check --format=github, which emits GitHub-native workflow annotations directly on the offending files and lines. Other supported formats include JSON and SARIF 2.1, the latter uploadable to code-scanning systems with stable fingerprints for tracking findings across runs. Developers automating Symfony quality gates can follow tooling changes like this via daily.dev."}},{"@type":"Question","name":"What exit codes does the symfony lsp:check command return?","acceptedAnswer":{"@type":"Answer","text":"Exit code 0 means analysis completed with no blocking diagnostics, 10 means blocking diagnostics were found, 11 means invalid invocation, configuration, or baseline, and 12 means analysis is incomplete due to indexing, timeout, process, or internal failure. A failing provider still returns a partial report but forces exit code 12 so CI does not treat it as clean. Engineers scripting CI failure policies around specific tools can keep tabs on details like this using daily.dev."}}]}
```

