Skip to content

kbagent sync: config isDisabled (enabled/disabled) state is not pulled or tracked — disabled flows/configs are invisible in the working tree and to sync diff #467

Description

@DasaDama

Summary

kbagent sync does not pull or track the configuration-level isDisabled (enabled/disabled) state. A config or flow that is disabled in production looks identical to an enabled one in the local working tree: sync diff / sync status report it as "in sync", and even a forced full re-pull produces byte-identical files. The disabled state is effectively invisible to the repo and to every sync/diff command — even though the Storage API exposes isDisabled.

Related to #466 (sync diff/status reliability), but this is a distinct root cause: the field is never pulled at all.

Environment

  • kbagent v0.59.0
  • Config-only sync trees (sync pull --no-jobs --no-storage), one .keboola/manifest.json per project.

Reproduction / evidence

  1. In production, all legacy flows (component keboola.orchestrator) of a project are DISABLED (each flow shows a DISABLED badge in the Keboola UI).
  2. The pulled config files contain no disabled flag, e.g. …/main/other/keboola.orchestrator/<flow>/_config.yml:
    version: 2
    name: Raw Data Processing
    description: ''
    _configuration_extra:
      phases: [ ... ]
      tasks:
        - id: 1
          name: ...
          enabled: true
          task: { mode: run, componentId: ..., configId: ... }
    _keboola:
      component_id: keboola.orchestrator
    There is no isDisabled at the config root (and a recursive search for disab* across the whole pulled project tree finds nothing in any config file).
  3. kbagent sync diff --project <p>
    No differences found. Local and remote are in sync.
    
  4. Forcing a full fresh pull (back up .keboola/manifest.json, empty its configurations array, then sync pull) downloads the whole project again and produces byte-identical files — the disabled state is still not written.
  5. The same isDisabled flag is returned by the Storage API / MCP for these configs, so the information exists upstream; kbagent simply doesn't include it when pulling.

Impact

  • You cannot tell from the repo — or from sync diff / sync status — whether a flow/config is enabled or disabled in production. sync diff will report "in sync" while production flows are disabled and the repo implies they're enabled.
  • The enabled/disabled state cannot be version-controlled or deployed: sync push carries no such flag.
  • Auditing "which flows/configs are disabled in production" is impossible through kbagent; it requires querying the API directly.

Expected behavior

  • sync pull should capture the config-level isDisabled state (e.g. an isDisabled: true field in _config.yml or in a meta/manifest entry).
  • sync diff / sync status should report a difference when the disabled state differs between local and remote.
  • sync push should be able to set/clear the disabled state on the remote config.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions