Warning: This document is for an old version of Rasa. The latest version is 1.10.8.

Rasa Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning starting with version 1.0.

[Unreleased 1.2.10] - master





[1.2.9] - 2019-09-17


  • Correctly pass SSL flag values to x CLI command

[1.2.8] - 2019-09-10


  • SQL tracker events are retrieved ordered by timestamps. This fixes interactive learning events being shown in the wrong order.

[1.2.7] - 2019-09-02


  • Added query dictionary argument to SQLTrackerStore which will be appended to the SQL connection URL as query parameters.

[1.2.6] - 2019-09-02


  • fixed bug that occurred when sending template elements through a channel that doesn’t support them

[1.2.5] - 2019-08-26


  • SSL support for rasa run command. Certificate can be specified using --ssl-certificate and --ssl-keyfile.


  • '/restart' will now also restart the bot if the tracker is paused

[1.2.4] - 2019-08-23


  • the SocketIO input channel now allows accesses from other origins (fixes SocketIO channel on Rasa X)

[1.2.3] - 2019-08-15


  • messages with multiple entities are now handled properly with e2e evaluation

  • data/test_evaluations/end_to_end_story.md was re-written in the restaurantbot domain


  • Free text input was not allowed in the Rasa shell when the response template contained buttons, which has now been fixed.

[1.2.2] - 2019-08-07


  • UserUttered events always got the same timestamp

[1.2.1] - 2019-08-06


  • Docs now have an EDIT THIS PAGE button


  • Flood control exceeded error in Telegram connector which happened because the webhook was set twice

[1.2.0] - 2019-08-01


  • add root route to server started without --enable-api parameter

  • add --evaluate-model-directory to rasa test core to evaluate models from rasa train core -c <config-1> <config-2>

  • option to send messages to the user by calling POST /conversations/{conversation_id}/execute


  • Agent.update_model() and Agent.handle_message() now work without needing to set a domain or a policy ensemble

  • Update pytype to 2019.7.11

  • new event broker class: SQLProducer. This event broker is now used when running locally with Rasa X

  • API requests are not longer logged to rasa_core.log by default in order to avoid problems when running on OpenShift (use --log-file rasa_core.log to retain the old behavior)

  • metadata attribute added to UserMessage


  • rasa test core can handle compressed model files

  • Rasa can handle story files containing multi line comments

  • Template will retain { if escaped with {. e.g. {{“foo”: {bar}}} will result in {“foo”: “replaced value”}

[1.1.8] - 2019-07-25


  • TrainingFileImporter interface to support customizing the process of loading training data

  • fill slots for custom templates


  • Agent.update_model() and Agent.handle_message() now work without needing to set a domain or a policy ensemble

  • update pytype to 2019.7.11


  • interactive learning bug where reverted user utterances were dumped to training data

  • added timeout to terminal input channel to avoid freezing input in case of server errors

  • fill slots for image, buttons, quick_replies and attachments in templates

  • rasa train core in comparison mode stores the model files compressed (tar.gz files)

  • slot setting in interactive learning with the TwoStageFallbackPolicy

[1.1.7] - 2019-07-18


  • added optional pymongo dependencies [tls, srv] to requirements.txt for better mongodb support

  • case_sensitive option added to WhiteSpaceTokenizer with true as default.


  • validation no longer throws an error during interactive learning

  • fixed wrong cleaning of use_entities in case it was a list and not True

  • updated the server endpoint /model/parse to handle also messages with the intent prefix

  • fixed bug where “No model found” message appeared after successfully running the bot

  • debug logs now print to rasa_core.log when running rasa x -vv or rasa run -vv

[1.1.6] - 2019-07-12


  • rest channel supports setting a message’s input_channel through a field input_channel in the request body


  • recommended syntax for empty use_entities and ignore_entities in the domain file has been updated from False or None to an empty list ([])


  • rasa run without --enable-api does not require a local model anymore

  • using rasa run with --enable-api to run a server now prints “running Rasa server” instead of “running Rasa Core server”

  • actions, intents, and utterances created in rasa interactive can no longer be empty

[1.1.5] - 2019-07-10


  • debug logging now tells you which tracker store is connected

  • the response of /model/train now includes a response header for the trained model filename

  • Validator class to help developing by checking if the files have any errors

  • project’s code is now linted using flake8

  • info log when credentials were provided for multiple channels and channel in --connector argument was specified at the same time

  • validate export paths in interactive learning


  • deprecate rasa.core.agent.handle_channels(...)`. Please use ``rasa.run(...) or rasa.core.run.configure_app instead.

  • Agent.load() also accepts tar.gz model file


  • revert the stripping of trailing slashes in endpoint URLs since this can lead to problems in case the trailing slash is actually wanted

  • starter packs were removed from Github and are therefore no longer tested by Travis script


  • all temporal model files are now deleted after stopping the Rasa server

  • rasa shell nlu now outputs unicode characters instead of \uxxxx codes

  • fixed PUT /model with model_server by deserializing the model_server to EndpointConfig.

  • x in AnySlotDict is now True for any x, which fixes empty slot warnings in interactive learning

  • rasa train now also includes NLU files in other formats than the Rasa format

  • rasa train core no longer crashes without a --domain arg

  • rasa interactive now looks for endpoints in endpoints.yml if no --endpoints arg is passed

  • custom files, e.g. custom components and channels, load correctly when using the command line interface

  • MappingPolicy now works correctly when used as part of a PolicyEnsemble

[1.1.4] - 2019-06-18


  • unfeaturize single entities

  • added agent readiness check to the /status resource


  • removed leading underscore from name of ‘_create_initial_project’ function.


  • fixed bug where facebook quick replies were not rendering

  • take FB quick reply payload rather than text as input

  • fixed bug where training_data path in metadata.json was an absolute path

[1.1.3] - 2019-06-14


  • fixed any inconsistent type annotations in code and some bugs revealed by type checker

[1.1.2] - 2019-06-13


  • fixed duplicate events appearing in tracker when using a PostgreSQL tracker store

[1.1.1] - 2019-06-13


  • fixed compatibility with Rasa SDK

  • bot responses can contain custom messages besides other message types

[1.1.0] - 2019-06-13


  • nlu configs can now be directly compared for performance on a dataset in rasa test nlu


  • update the tracker in interactive learning through reverting and appending events instead of replacing the tracker

  • POST /conversations/{conversation_id}/tracker/events supports a list of events


  • fixed creation of RasaNLUHttpInterpreter

  • form actions are included in domain warnings

  • default actions, which are overriden by custom actions and are listed in the domain are excluded from domain warnings

  • SQL data column type to Text for compatibility with MySQL

  • non-featurizer training parameters don’t break SklearnPolicy anymore

[1.0.9] - 2019-06-10


  • revert PR #3739 (as this is a breaking change): set PikaProducer and KafkaProducer default queues back to rasa_core_events

[1.0.8] - 2019-06-10


  • support for specifying full database urls in the SQLTrackerStore configuration

  • maximum number of predictions can be set via the environment variable MAX_NUMBER_OF_PREDICTIONS (default is 10)


  • default PikaProducer and KafkaProducer queues to rasa_production_events

  • exclude unfeaturized slots from domain warnings


  • loading of additional training data with the SkillSelector

  • strip trailing slashes in endpoint URLs

[1.0.7] - 2019-06-06


  • added argument --rasa-x-port to specify the port of Rasa X when running Rasa X locally via rasa x


  • slack notifications from bots correctly render text

  • fixed usage of --log-file argument for rasa run and rasa shell

  • check if correct tracker store is configured in local mode

[1.0.6] - 2019-06-03


  • fixed backwards incompatible utils changes

[1.0.5] - 2019-06-03


  • fixed spacy being a required dependency (regression)

[1.0.4] - 2019-06-03


  • automatic creation of index on the sender_id column when using an SQL tracker store. If you have an existing data and you are running into performance issues, please make sure to add an index manually using CREATE INDEX event_idx_sender_id ON events (sender_id);.


  • NLU evaluation in cross-validation mode now also provides intent/entity reports, confusion matrix, etc.

[1.0.3] - 2019-05-30


  • non-ascii characters render correctly in stories generated from interactive learning

  • validate domain file before usage, e.g. print proper error messages if domain file is invalid instead of raising errors

[1.0.2] - 2019-05-29


  • added domain_warnings() method to Domain which returns a dict containing the diff between supplied {actions, intents, entities, slots} and what’s contained in the domain


  • fix lookup table files failed to load issues/3622

  • buttons can now be properly selected during cmdline chat or when in interactive learning

  • set slots correctly when events are added through the API

  • mapping policy no longer ignores NLU threshold

  • mapping policy priority is correctly persisted

[1.0.1] - 2019-05-21


  • updated installation command in docs for Rasa X

[1.0.0] - 2019-05-21


  • added arguments to set the file paths for interactive training

  • added quick reply representation for command-line output

  • added option to specify custom button type for Facebook buttons

  • added tracker store persisting trackers into a SQL database (SQLTrackerStore)

  • added rasa command line interface and API

  • Rasa HTTP training endpoint at POST /jobs. This endpoint will train a combined Rasa Core and NLU model

  • ReminderCancelled(action_name) event to cancel given action_name reminder for current user

  • Rasa HTTP intent evaluation endpoint at POST /intentEvaluation. This endpoints performs an intent evaluation of a Rasa model

  • option to create template for new utterance action in interactive learning

  • you can now choose actions previously created in the same session in interactive learning

  • add formatter ‘black’

  • channel-specific utterances via the - "channel": key in utterance templates

  • arbitrary json messages via the - "custom": key in utterance templates and via utter_custom_json() method in custom actions

  • support to load sub skills (domain, stories, nlu data)

  • support to select which sub skills to load through import section in config.yml

  • support for spaCy 2.1

  • a model for an agent can now also be loaded from a remote storage

  • log level can be set via environment variable LOG_LEVEL

  • add --store-uncompressed to train command to not compress Rasa model

  • log level of libraries, such as tensorflow, can be set via environment variable LOG_LEVEL_LIBRARIES

  • if no spaCy model is linked upon building a spaCy pipeline, an appropriate error message is now raised with instructions for linking one


  • renamed all CLI parameters containing any _ to use dashes - instead (GNU standard)

  • renamed rasa_core package to rasa.core

  • for interactive learning only include manually annotated and ner_crf entities in nlu export

  • made message_id an additional argument to interpreter.parse

  • changed removing punctuation logic in WhitespaceTokenizer

  • training_processes in the Rasa NLU data router have been renamed to worker_processes

  • created a common utils package rasa.utils for nlu and core, common methods like read_yaml moved there

  • removed --num_threads from run command (server will be asynchronous but running in a single thread)

  • the _check_token() method in RasaChat now authenticates against /auth/verify instead of /user

  • removed --pre_load from run command (Rasa NLU server will just have a maximum of one model and that model will be loaded by default)

  • changed file format of a stored trained model from the Rasa NLU server to tar.gz

  • train command uses fallback config if an invalid config is given

  • test command now compares multiple models if a list of model files is provided for the argument --model

  • Merged rasa.core and rasa.nlu server into a single server. See swagger file in docs/_static/spec/server.yaml for available endpoints.

  • utter_custom_message() method in rasa_core_sdk has been renamed to utter_elements()

  • updated dependencies. as part of this, models for spacy need to be reinstalled for 2.1 (from 2.0)

  • make sure all command line arguments for rasa test and rasa interactive are actually used, removed arguments that were not used at all (e.g. --core for rasa test)


  • removed possibility to execute python -m rasa_core.train etc. (e.g. scripts in rasa.core and rasa.nlu). Use the CLI for rasa instead, e.g. rasa train core.

  • removed _sklearn_numpy_warning_fix from the SklearnIntentClassifier

  • removed Dispatcher class from core

  • removed projects: the Rasa NLU server now has a maximum of one model at a time loaded.


  • evaluating core stories with two stage fallback gave an error, trying to handle None for a policy

  • the /evaluate route for the Rasa NLU server now runs evaluation in a parallel process, which prevents the currently loaded model unloading

  • added missing implementation of the keys() function for the Redis Tracker Store

  • in interactive learning: only updates entity values if user changes annotation

  • log options from the command line interface are applied (they overwrite the environment variable)

  • all message arguments (kwargs in dispatcher.utter methods, as well as template args) are now sent through to output channels

  • utterance templates defined in actions are checked for existence upon training a new agent, and a warning is thrown before training if one is missing