First of all, today we have the ability to perform this calculation within Cloud Hub. Within Zendesk, we do not make adjustments to display this data, but we have an alternative that some clients use and we want to share.
How it works
In summary, we use a Custom Field to calculate when it is filled and cleared. Example of a Custom Field:

After that, we use two Triggers—one to add the tag and another to remove it. The removal trigger needs to use a No-Code integrator or another tool to activate the action only when the message is from an agent.
Another option, if you don’t want to use a No-Code integration, is simply to set up the trigger to add the tag and coordinate the use of a Macro with the agents.
Trigger to add a tag indicating "Unstarted Support"
The goal of this trigger is to identify when the support was transferred to a Group or Agent, starting the timer when the tag is added (which, in turn, fills the Custom Field). Example of the trigger:

Trigger to remove the support started tag
The goal of this trigger is to remove the support tag, which stops the timer. Example of conditions:

This second trigger needs to use a No-Code tool (e.g., Make) to add a filter that currently doesn't exist, which is identifying whether the message comes from an Agent or a Customer.
In our case, we need to activate only if the message is from an Agent. Example of an action to be executed with Make Webhook and API configured:

Example of validation using Make to perform the filtering:

Example of configuring the API request to Zendesk:

Afterwards, you can perform analyses using Zendesk Explore to measure the SLA after the automated agent from Cloud Humans.