Create configuration storage programmattically for list_string
I finish by find what was the problem. When I read the config file, my allowed value are of format:

[
  [
    'value' =&gt; 'anchor',
    'label' =&gt; 'Anchor'
  ],
  [
    'value' =&gt; 'internal',
    'label' =&gt; 'Internal'
  ],
  [
    'value' =&gt; 'external',
    'label' =&gt; 'External'
  ]
]


But the FieldStorageConfig wait a format:

[
  'anchor' =&gt; 'Anchor',
  'internal' =&gt; 'Internal',
  'external' =&gt; 'External'
]


So I add a transformation before to save my new field:

$field_storage_link = \Drupal::service('config.storage.sync')-&gt;read('field.storage.paragraph.field_types_link');

$allowed_values_link = [];

foreach($field_storage_link['settings']['allowed_values'] as $value) {
  $allowed_values_link[$value['value']] = $value['label'];
}

$field_storage_link['settings']['allowed_values'] = $allowed_values_link;

\Drupal::entityTypeManager()-&gt;getStorage('field_storage_config')
      -&gt;create($field_storage_link)
      -&gt;save();

$field_type_link = \Drupal::service('config.storage.sync')-&gt;read('field.field.paragraph.link_tdm.field_types_link');

\Drupal::entityTypeManager()-&gt;getStorage('field_config')-&gt;create($field_type_link)-&gt;save();


It works properly.