litespeed/update-css-settings changes CSS handling: minify, combine, inline, async loading and the unique-CSS toggles.
Combining CSS is the single most common cause of a broken layout after enabling optimisation. Purge and check the front end afterwards.
At a glance
| Ability | litespeed/update-css-settings |
| Toolset | LiteSpeed Cache — toolset/litespeed |
| Group | LiteSpeed Cache › CSS, JS & HTML |
| Requires | LiteSpeed Cache, active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
Why combining breaks layouts
CSS is order-dependent. A stylesheet loaded later overrides an earlier one, and themes and plugins rely on that ordering constantly — a plugin’s stylesheet enqueued after the theme’s expects to win.
Combining concatenates files into one, and while LiteSpeed preserves the enqueue order, it cannot preserve everything: conditionally loaded stylesheets, media-query attributes, and anything a theme injects outside the enqueue system all move or collapse.
The result is a layout that is subtly wrong — spacing off, a colour reverted, a component unstyled — rather than a page that fails. Nobody gets an error.
Minification alone is much safer and usually delivers most of the benefit. Enabling minify first and combine separately is the sequence that tells you which one broke something.
Async CSS loading is the aggressive end: it removes render-blocking at the cost of a visible flash of unstyled content unless critical CSS is in place.
Optimisation is the area of LiteSpeed most likely to break a site, and it breaks it in a way that is easy to miss: the page still loads, the HTML is still correct, and one script silently stopped running. Purge and look at the front end after every change here — including the pages you did not change, since optimisation is site-wide.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
settings | object | Yes | A map of setting key to new value. Keys outside this area are refused, and the refusal lists what the area accepts. |
What comes back
| Name | Type | What it is |
|---|---|---|
updated | array | The keys that actually changed. An empty array means every value you sent was already set. |
settings | array | Every setting in the area after the write, in the read shape. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Turn on CSS minification.
It resolves to one call:
{
"ability": "litespeed/update-css-settings",
"parameters": {
"settings": { "optm-css_min": true }
}
}Worth knowing
- Enable minify and combine separately, so you know which broke something.
- Async CSS without critical CSS produces a flash of unstyled content.
- Purge generated assets after changing these.
- A patch — unsent keys are untouched.
Related abilities
- Update Optimisation Exclusions — hold one file back
- Purge Generated CSS And JS — regenerate after the change
- Get Optimisation Status — check it produced anything
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category