Configuration Troubleshooting
Fixes for errors from frg config commands and for configuration problems that stop workflow commands before the agent runs. Start with frg config validate and frg config show --verbose: they list every configuration file Forge found and whether it is valid.
Initialization
Initial configuration required.
Cause
Forge found no configuration for the current directory. You are outside the project, or you never ran frg config init here.
Solution
- Go to the repository root.
- Initialize Forge with an agent and a toolchain:
frg config init --agent github_copilot --issues github_issues --code github
Verify
frg status
Required configuration not found
Error: Configuration error: Required configuration not found
Searched for project.toml in:
/path/to/dir/.forge/config/project.toml
Cause
The command needs project.toml, but the directory has none. This happens in an application root that only has application.toml, or in a directory outside the project.
Solution
- Check the searched path in the message. If it is the wrong directory,
cdto the repository root. - If this repository was never initialized, run:
frg config init
Verify
frg config show
Toolchain: Missing (REQUIRED)
frg config validate or a workflow command can also print toolchain.toml is required. Run 'frg config init --issues <name> --code <name>' to create it.
Cause
.forge/config/toolchain.toml does not exist. Workflow commands need it to know your issue tracker and code platform.
Solution
- Create it:
frg config init --issues github_issues --code github
- If the file already exists and you want to replace it, add
--force:
frg config init --issues github_issues --code github --force
Verify
frg status
frg status shows ✓ Toolchain: Configured.
At least one of issue_tracker or ticket_tracker must be configured
Cause
toolchain.toml exists but defines neither an issue tracker nor a ticket tracker.
Solution
- Regenerate the file with a tracker:
# Issue tracker
frg config init --issues github_issues --code github --force
# Or a ticket tracker
frg config init --tickets jira --code github --force
- Alternatively, edit
.forge/config/toolchain.tomlby hand. See Toolchain Configuration.
Verify
frg config validate
frg config show
Monorepo is enabled but no services are defined
Full message: Monorepo is enabled but no services are defined. Add [[monorepo.services]] entries or set monorepo.enabled = false.
Cause
project.toml sets monorepo.enabled = true but has no [[monorepo.services]] entries.
Solution
- Add a
[[monorepo.services]]entry for each service. See Monorepo. - Or, if the repository is not a monorepo, set
enabled = falsein the[monorepo]section.
Verify
frg config validate
agents.toml already exists
The same happens for toolchain.toml already exists and project.toml already exists.
Cause
frg config init does not overwrite existing configuration files by default.
Solution
- Pass the option that selects the file together with
--force:
# Replace agents.toml
frg config init --agent claude_code --force
# Replace toolchain.toml
frg config init --issues jira --code github --force
# Edit project.toml interactively
frg config init --interactive --force
--forcealone fails with--force requires at least one configuration option. It cannot be combined with--app.
Verify
frg config show
Validation
TOML parse error at line <n>, column <m>
Example from frg config validate:
Error: Workflow schema error: Invalid TOML in '.forge/config/workflows/hello-workflow.toml': TOML parse error at line 3, column 1
|
3 | [workflow]
| ^^^^^^^^^^
Cause
A configuration or workflow file has a TOML syntax error: an unclosed quote, a duplicate table, or a missing =.
Solution
- Open the file named in the message and go to the line and column shown.
- Fix the syntax.
- Validate only that file:
frg config validate --file .forge/config/commands.toml
- For a workflow file, use the focused validator:
frg workflow validate hello-workflow
Verify
frg config validate ends with ✓ All configuration files are valid.
Configuration lock
The lock is opt-in. frg config lock validates all configuration files and writes .forge/.config_lock with a SHA-256 hash of each file. While the lock file exists, workflow commands refuse to run if any configuration file changes.
Configuration has changed since last lock.
Cause
A configuration file listed under Changed files: was edited after the lock was written.
Solution
- Review the changes, for example with
git diff .forge/config/. - If the changes are intended, validate and lock again:
frg config lock
- If the changes are not intended, revert them.
Verify
Run the workflow command again.
Lock file is corrupted or invalid.
Cause
.forge/.config_lock was edited by hand or damaged, for example by a merge conflict.
Solution
- Regenerate the lock file:
frg config lock
- To stop using the lock entirely, delete
.forge/.config_lock.
Verify
frg config show shows the current Lock Status.
License
For license file names, locations, and discovery order, see Licensing.
Telerik license not found.
frg learn prints the same message followed by Workflow tutorials require a valid Telerik license.
Cause
Forge found no license file in any searched location and no license environment variable.
Solution
- Place
telerik-license.txtin.forge/license/at the project root, or in~/.config/forge/license/. - Or set the license content or path in an environment variable:
export TELERIK_LICENSE_PATH="/secure/location/telerik-license.txt"
Verify
Run the command again. If the license is still not found, Forge lists every location it searched.
License expired on <date>
Related message: Your license is no longer valid.
Cause
The subscription or trial license is past its expiration date.
Solution
- Contact your Progress representative to renew.
- Replace the old license file with the new one.
License signature verification failed
Related messages: The license file exists but has an invalid signature., The license file could not be parsed., and License file exceeds maximum size of <n> bytes.
Cause
The license file was edited, truncated, or saved with extra content. Any change breaks the signature.
Solution
- Download the original license file again. Do not open it in an editor that changes line endings or encoding.
- Replace the existing file.
Telemetry and OpenSearch settings
Telemetry, OTLP export, and OpenSearch are configured in telemetry.toml. See Progress and Observability and OpenSearch Integration. Upload failures during a run are covered in Runtime Troubleshooting.
Invalid OpenSearch URI format in telemetry.toml
Related message: OpenSearch API token is empty in telemetry.toml. In both cases Forge disables OpenSearch uploads and continues.
Cause
The [opensearch] section has a malformed uri or an empty api_token.
Solution
- Find the file in use. Forge checks
FORGE_TELEMETRY_PATH, then.forge/config/telemetry.toml, then~/.config/forge/telemetry.toml, then/etc/forge/telemetry.toml. - Fix the section:
[opensearch]
uri = "https://opensearch.example.com:9200"
api_token = "<token>"
Verify
Run a workflow and check .forge/work/<job>/logs/system.log for OpenSearch warnings.
OTEL endpoint must start with http://, https://, or grpc://
Related messages: OTEL timeout_secs must be between 1 and 60 and OTEL endpoint uses HTTP instead of HTTPS - this is a security risk.
Cause
The [endpoint] section of telemetry.toml has an invalid url or timeout_secs, or uses plain HTTP.
Solution
- Correct the endpoint:
[endpoint]
url = "https://otel.example.com:4318"
protocol = "http"
timeout_secs = 10
- Use
https://outside local testing.
Export
not found in built-in workflows
Cause
frg config export --target <TARGET> received a target name that has no built-in workflow.
Solution
- Use a workflow target such as
issue,backlog,code,pr,docs,ticket, orsec:
frg config export --prompts --target issue
- Remember that you must also choose what to export:
--commands,--prompts,--workflows,--skills,--security, or--all.
Export does not overwrite existing files
Cause
frg config export keeps files you have already customized.
Solution
- Back up the existing files:
cp -r .forge/prompts .forge/prompts.bak
- Export again with
--force:
frg config export --prompts --target issue --force
Internal errors
Configuration not available for workflow execution.
Cause
This is an internal error: Forge discovered the configuration at start-up, but the workflow handler did not receive it. The most common trigger is running a workflow command in a directory that is not initialized.
Solution
- Confirm that you are in the project root and that it is initialized:
frg status
frg config validate
- If
.forge/config/project.tomlis missing, runfrg config init. - If the project is configured correctly and the error persists, report it. The message links to
https://github.com/Progress-Copilot/frg/issues, which is a private repository. Use https://github.com/telerik/forge/issues instead and include theDebug informationblock and the command you ran.
Automatic configuration (frg app discover --auto)
frg app discover --auto uses AI analysis to create project.toml for child repositories that do not have one.
Existing repositories are skipped
Cause
This is expected. --auto never overwrites an existing project.toml.
Solution
- To correct one repository, run
frg config init --interactive --forcein that repository. - To regenerate it from scratch, back up and delete its
.forge/config/project.toml, then runfrg app discover --autoagain.
Generated configuration has wrong values
Cause
AI analysis can misidentify the framework, test framework, or package manager, especially in repositories with several toolchains.
Solution
- Review and correct each field with AI suggestions:
frg config init --interactive --force
- Or edit
.forge/config/project.tomldirectly and runfrg config validate.
--auto stops in CI or a non-interactive shell
Cause
Before it runs, --auto shows a warning about AI-generated content that needs confirmation.
Solution
- Confirm the risk with the environment variable:
FORGE_ACCEPT_AUTO_RISK=true frg app discover --auto
- Review the generated
project.tomlfiles before you commit them.
No child repositories are found
Cause
frg app discover only finds repositories whose project.toml has an allow_app value matching the application UUID in application.toml.
Solution
- Check the application UUID:
cat .forge/config/application.toml
- Add
allow_app = "<application-uuid>"to each child repository'sproject.toml. - Run discovery again:
frg app discover